@powersync/common 1.16.2 → 1.17.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/index.js +3 -3
- package/lib/client/AbstractPowerSyncDatabase.d.ts +10 -3
- package/lib/client/AbstractPowerSyncDatabase.js +36 -20
- package/lib/client/AbstractPowerSyncDatabase.js.map +1 -1
- package/lib/client/AbstractPowerSyncOpenFactory.d.ts +1 -1
- package/lib/client/sync/bucket/BucketStorageAdapter.d.ts +4 -0
- package/lib/client/sync/bucket/SqliteBucketStorage.d.ts +3 -0
- package/lib/client/sync/bucket/SqliteBucketStorage.js +23 -7
- package/lib/client/sync/bucket/SqliteBucketStorage.js.map +1 -1
- package/lib/client/sync/stream/AbstractRemote.d.ts +2 -0
- package/lib/client/sync/stream/AbstractRemote.js +13 -2
- package/lib/client/sync/stream/AbstractRemote.js.map +1 -1
- package/lib/client/sync/stream/AbstractStreamingSyncImplementation.js +6 -2
- package/lib/client/sync/stream/AbstractStreamingSyncImplementation.js.map +1 -1
- package/lib/client/sync/stream/streaming-sync-types.d.ts +1 -0
- package/lib/client/sync/stream/streaming-sync-types.js.map +1 -1
- package/lib/db/schema/Column.d.ts +30 -0
- package/lib/db/{Column.js → schema/Column.js} +17 -0
- package/lib/db/schema/Column.js.map +1 -0
- package/lib/db/schema/Index.d.ts +1 -1
- package/lib/db/schema/IndexedColumn.d.ts +1 -1
- package/lib/db/schema/IndexedColumn.js +1 -1
- package/lib/db/schema/IndexedColumn.js.map +1 -1
- package/lib/db/schema/Schema.d.ts +6 -7
- package/lib/db/schema/Schema.js +11 -2
- package/lib/db/schema/Schema.js.map +1 -1
- package/lib/db/schema/Table.d.ts +89 -9
- package/lib/db/schema/Table.js +64 -9
- package/lib/db/schema/Table.js.map +1 -1
- package/lib/db/schema/TableV2.d.ts +8 -29
- package/lib/db/schema/TableV2.js +5 -40
- package/lib/db/schema/TableV2.js.map +1 -1
- package/lib/index.d.ts +2 -3
- package/lib/index.js +2 -3
- package/lib/index.js.map +1 -1
- package/package.json +2 -2
- package/lib/db/Column.d.ts +0 -19
- package/lib/db/Column.js.map +0 -1
- package/lib/utils/strings.d.ts +0 -3
- package/lib/utils/strings.js +0 -10
- package/lib/utils/strings.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"streaming-sync-types.js","sourceRoot":"","sources":["../../../../src/client/sync/stream/streaming-sync-types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"streaming-sync-types.js","sourceRoot":"","sources":["../../../../src/client/sync/stream/streaming-sync-types.ts"],"names":[],"mappings":"AA2IA,MAAM,UAAU,mBAAmB,CAAC,IAAuB;IACzD,OAAQ,IAA8B,CAAC,IAAI,IAAI,IAAI,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAuB;IAC1D,OAAQ,IAA+B,CAAC,gBAAgB,IAAI,IAAI,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,IAAuB;IAC/D,OAAQ,IAAgC,CAAC,UAAU,IAAI,IAAI,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,iCAAiC,CAAC,IAAuB;IACvE,OAAQ,IAAwC,CAAC,mBAAmB,IAAI,IAAI,CAAC;AAC/E,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,IAAuB;IACnE,OAAQ,IAAoC,CAAC,eAAe,IAAI,IAAI,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,OAAoB;IAC9D,OAAO,CACL,KAAK,CAAC,OAAO,CAAE,OAAqC,CAAC,OAAO,CAAC;QAC7D,OAAQ,OAAqC,CAAC,gBAAgB,IAAI,QAAQ,CAC3E,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,OAAoB;IAC7D,OAAO,OAAQ,OAAoC,CAAC,kBAAkB,IAAI,QAAQ,CAAC;AACrF,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export declare enum ColumnType {
|
|
2
|
+
TEXT = "TEXT",
|
|
3
|
+
INTEGER = "INTEGER",
|
|
4
|
+
REAL = "REAL"
|
|
5
|
+
}
|
|
6
|
+
export interface ColumnOptions {
|
|
7
|
+
name: string;
|
|
8
|
+
type?: ColumnType;
|
|
9
|
+
}
|
|
10
|
+
export type BaseColumnType<T extends number | string | null> = {
|
|
11
|
+
type: ColumnType;
|
|
12
|
+
};
|
|
13
|
+
export type ColumnsType = Record<string, BaseColumnType<any>>;
|
|
14
|
+
export type ExtractColumnValueType<T extends BaseColumnType<any>> = T extends BaseColumnType<infer R> ? R : unknown;
|
|
15
|
+
export declare const MAX_AMOUNT_OF_COLUMNS = 63;
|
|
16
|
+
export declare const column: {
|
|
17
|
+
text: BaseColumnType<string | null>;
|
|
18
|
+
integer: BaseColumnType<number | null>;
|
|
19
|
+
real: BaseColumnType<number | null>;
|
|
20
|
+
};
|
|
21
|
+
export declare class Column {
|
|
22
|
+
protected options: ColumnOptions;
|
|
23
|
+
constructor(options: ColumnOptions);
|
|
24
|
+
get name(): string;
|
|
25
|
+
get type(): ColumnType | undefined;
|
|
26
|
+
toJSON(): {
|
|
27
|
+
name: string;
|
|
28
|
+
type: ColumnType | undefined;
|
|
29
|
+
};
|
|
30
|
+
}
|
|
@@ -5,6 +5,23 @@ export var ColumnType;
|
|
|
5
5
|
ColumnType["INTEGER"] = "INTEGER";
|
|
6
6
|
ColumnType["REAL"] = "REAL";
|
|
7
7
|
})(ColumnType || (ColumnType = {}));
|
|
8
|
+
const text = {
|
|
9
|
+
type: ColumnType.TEXT
|
|
10
|
+
};
|
|
11
|
+
const integer = {
|
|
12
|
+
type: ColumnType.INTEGER
|
|
13
|
+
};
|
|
14
|
+
const real = {
|
|
15
|
+
type: ColumnType.REAL
|
|
16
|
+
};
|
|
17
|
+
// There is maximum of 127 arguments for any function in SQLite. Currently we use json_object which uses 1 arg per key (column name)
|
|
18
|
+
// and one per value, which limits it to 63 arguments.
|
|
19
|
+
export const MAX_AMOUNT_OF_COLUMNS = 63;
|
|
20
|
+
export const column = {
|
|
21
|
+
text,
|
|
22
|
+
integer,
|
|
23
|
+
real
|
|
24
|
+
};
|
|
8
25
|
export class Column {
|
|
9
26
|
options;
|
|
10
27
|
constructor(options) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Column.js","sourceRoot":"","sources":["../../../src/db/schema/Column.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,MAAM,CAAN,IAAY,UAIX;AAJD,WAAY,UAAU;IACpB,2BAAa,CAAA;IACb,iCAAmB,CAAA;IACnB,2BAAa,CAAA;AACf,CAAC,EAJW,UAAU,KAAV,UAAU,QAIrB;AAeD,MAAM,IAAI,GAAkC;IAC1C,IAAI,EAAE,UAAU,CAAC,IAAI;CACtB,CAAC;AAEF,MAAM,OAAO,GAAkC;IAC7C,IAAI,EAAE,UAAU,CAAC,OAAO;CACzB,CAAC;AAEF,MAAM,IAAI,GAAkC;IAC1C,IAAI,EAAE,UAAU,CAAC,IAAI;CACtB,CAAC;AAEF,oIAAoI;AACpI,sDAAsD;AACtD,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,CAAC;AAExC,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,IAAI;IACJ,OAAO;IACP,IAAI;CACL,CAAC;AAEF,MAAM,OAAO,MAAM;IACK;IAAtB,YAAsB,OAAsB;QAAtB,YAAO,GAAP,OAAO,CAAe;IAAG,CAAC;IAEhD,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3B,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3B,CAAC;IAED,MAAM;QACJ,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC;IACJ,CAAC;CACF"}
|
package/lib/db/schema/Index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IndexedColumn.js","sourceRoot":"","sources":["../../../src/db/schema/IndexedColumn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"IndexedColumn.js","sourceRoot":"","sources":["../../../src/db/schema/IndexedColumn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAQtC,MAAM,CAAC,MAAM,4BAA4B,GAAgC;IACvE,SAAS,EAAE,IAAI;CAChB,CAAC;AAEF,MAAM,OAAO,aAAa;IACd,OAAO,CAAqB;IAEtC,MAAM,CAAC,eAAe,CAAC,MAAc;QACnC,OAAO,IAAI,aAAa,CAAC;YACvB,IAAI,EAAE,MAAM;YACZ,SAAS,EAAE,IAAI;SAChB,CAAC,CAAC;IACL,CAAC;IAED,YAAY,OAA2B;QACrC,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,4BAA4B,EAAE,GAAG,OAAO,EAAE,CAAC;IACjE,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3B,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;IAChC,CAAC;IAED,MAAM,CAAC,KAAY;QACjB,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,UAAU,CAAC,IAAI;SACzF,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { Table
|
|
2
|
-
|
|
3
|
-
type SchemaType = Record<string, TableV2<any>>;
|
|
1
|
+
import { RowType, Table } from './Table';
|
|
2
|
+
type SchemaType = Record<string, Table<any>>;
|
|
4
3
|
type SchemaTableType<S extends SchemaType> = {
|
|
5
4
|
[K in keyof S]: RowType<S[K]>;
|
|
6
5
|
};
|
|
@@ -10,8 +9,8 @@ type SchemaTableType<S extends SchemaType> = {
|
|
|
10
9
|
export declare class Schema<S extends SchemaType = SchemaType> {
|
|
11
10
|
readonly types: SchemaTableType<S>;
|
|
12
11
|
readonly props: S;
|
|
13
|
-
readonly tables:
|
|
14
|
-
constructor(tables:
|
|
12
|
+
readonly tables: Table[];
|
|
13
|
+
constructor(tables: Table[] | S);
|
|
15
14
|
validate(): void;
|
|
16
15
|
toJSON(): {
|
|
17
16
|
tables: {
|
|
@@ -21,14 +20,14 @@ export declare class Schema<S extends SchemaType = SchemaType> {
|
|
|
21
20
|
insert_only: boolean;
|
|
22
21
|
columns: {
|
|
23
22
|
name: string;
|
|
24
|
-
type: import("
|
|
23
|
+
type: import("./Column").ColumnType | undefined;
|
|
25
24
|
}[];
|
|
26
25
|
indexes: {
|
|
27
26
|
name: string;
|
|
28
27
|
columns: {
|
|
29
28
|
name: string;
|
|
30
29
|
ascending: boolean | undefined;
|
|
31
|
-
type: import("
|
|
30
|
+
type: import("./Column").ColumnType;
|
|
32
31
|
}[];
|
|
33
32
|
}[];
|
|
34
33
|
}[];
|
package/lib/db/schema/Schema.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Table
|
|
1
|
+
import { Table } from './Table';
|
|
2
2
|
/**
|
|
3
3
|
* A schema is a collection of tables. It is used to define the structure of a database.
|
|
4
4
|
*/
|
|
@@ -25,12 +25,21 @@ export class Schema {
|
|
|
25
25
|
}
|
|
26
26
|
toJSON() {
|
|
27
27
|
return {
|
|
28
|
+
// This is required because "name" field is not present in TableV2
|
|
28
29
|
tables: this.tables.map((t) => t.toJSON())
|
|
29
30
|
};
|
|
30
31
|
}
|
|
31
32
|
convertToClassicTables(props) {
|
|
32
33
|
return Object.entries(props).map(([name, table]) => {
|
|
33
|
-
|
|
34
|
+
const convertedTable = new Table({
|
|
35
|
+
name,
|
|
36
|
+
columns: table.columns,
|
|
37
|
+
indexes: table.indexes,
|
|
38
|
+
localOnly: table.localOnly,
|
|
39
|
+
insertOnly: table.insertOnly,
|
|
40
|
+
viewName: table.viewNameOverride || name
|
|
41
|
+
});
|
|
42
|
+
return convertedTable;
|
|
34
43
|
});
|
|
35
44
|
}
|
|
36
45
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Schema.js","sourceRoot":"","sources":["../../../src/db/schema/Schema.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"Schema.js","sourceRoot":"","sources":["../../../src/db/schema/Schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,EAAE,MAAM,SAAS,CAAC;AAQzC;;GAEG;AACH,MAAM,OAAO,MAAM;IACjB;;MAEE;IACO,KAAK,CAAqB;IAC1B,KAAK,CAAI;IACT,MAAM,CAAU;IAEzB,YAAY,MAAmB;QAC7B,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,KAAK,GAAG,MAAW,CAAC;YACzB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxD,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,kEAAkE;YAClE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SAC3C,CAAC;IACJ,CAAC;IAEO,sBAAsB,CAAC,KAAQ;QACrC,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE;YACjD,MAAM,cAAc,GAAG,IAAI,KAAK,CAAC;gBAC/B,IAAI;gBACJ,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,QAAQ,EAAE,KAAK,CAAC,gBAAgB,IAAI,IAAI;aACzC,CAAC,CAAC;YACH,OAAO,cAAc,CAAC;QACxB,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
|
package/lib/db/schema/Table.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Column } from '
|
|
2
|
-
import
|
|
1
|
+
import { Column, ColumnsType, ColumnType, ExtractColumnValueType } from './Column';
|
|
2
|
+
import { Index } from './Index';
|
|
3
3
|
import { TableV2 } from './TableV2';
|
|
4
4
|
export interface TableOptions {
|
|
5
5
|
/**
|
|
@@ -12,18 +12,98 @@ export interface TableOptions {
|
|
|
12
12
|
insertOnly?: boolean;
|
|
13
13
|
viewName?: string;
|
|
14
14
|
}
|
|
15
|
-
export
|
|
15
|
+
export type RowType<T extends TableV2<any>> = {
|
|
16
|
+
[K in keyof T['columnMap']]: ExtractColumnValueType<T['columnMap'][K]>;
|
|
17
|
+
} & {
|
|
18
|
+
id: string;
|
|
19
|
+
};
|
|
20
|
+
export type IndexShorthand = Record<string, string[]>;
|
|
21
|
+
export interface TableV2Options {
|
|
22
|
+
indexes?: IndexShorthand;
|
|
23
|
+
localOnly?: boolean;
|
|
24
|
+
insertOnly?: boolean;
|
|
25
|
+
viewName?: string;
|
|
26
|
+
}
|
|
27
|
+
export declare const DEFAULT_TABLE_OPTIONS: {
|
|
28
|
+
indexes: never[];
|
|
29
|
+
insertOnly: boolean;
|
|
30
|
+
localOnly: boolean;
|
|
31
|
+
};
|
|
16
32
|
export declare const InvalidSQLCharacters: RegExp;
|
|
17
|
-
export declare class Table {
|
|
33
|
+
export declare class Table<Columns extends ColumnsType = ColumnsType> {
|
|
18
34
|
protected options: TableOptions;
|
|
19
|
-
|
|
20
|
-
static
|
|
21
|
-
static
|
|
35
|
+
protected _mappedColumns: Columns;
|
|
36
|
+
static createLocalOnly(options: TableOptions): Table<ColumnsType>;
|
|
37
|
+
static createInsertOnly(options: TableOptions): Table<ColumnsType>;
|
|
38
|
+
/**
|
|
39
|
+
* Create a table.
|
|
40
|
+
* @deprecated This was only only included for TableV2 and is no longer necessary.
|
|
41
|
+
* Prefer to use new Table() directly.
|
|
42
|
+
*
|
|
43
|
+
* TODO remove in the next major release.
|
|
44
|
+
*/
|
|
45
|
+
static createTable(name: string, table: Table): Table<ColumnsType>;
|
|
46
|
+
/**
|
|
47
|
+
* Creates a new Table instance.
|
|
48
|
+
*
|
|
49
|
+
* This constructor supports two different versions:
|
|
50
|
+
* 1. New constructor: Using a Columns object and an optional TableV2Options object
|
|
51
|
+
* 2. Deprecated constructor: Using a TableOptions object (will be removed in the next major release)
|
|
52
|
+
*
|
|
53
|
+
* @constructor
|
|
54
|
+
* @param {Columns | TableOptions} optionsOrColumns - Either a Columns object (for V2 syntax) or a TableOptions object (for V1 syntax)
|
|
55
|
+
* @param {TableV2Options} [v2Options] - Optional configuration options for V2 syntax
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* <caption>New constructor example</caption>
|
|
59
|
+
* ```javascript
|
|
60
|
+
* const table = new Table(
|
|
61
|
+
* {
|
|
62
|
+
* name: column.text,
|
|
63
|
+
* age: column.integer
|
|
64
|
+
* },
|
|
65
|
+
* { indexes: { nameIndex: ['name'] } }
|
|
66
|
+
* );
|
|
67
|
+
*```
|
|
68
|
+
*
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* <caption>Deprecated constructor example</caption>
|
|
72
|
+
* ```javascript
|
|
73
|
+
* const table = new Table({
|
|
74
|
+
* name: 'users',
|
|
75
|
+
* columns: [
|
|
76
|
+
* new Column({ name: 'name', type: ColumnType.TEXT }),
|
|
77
|
+
* new Column({ name: 'age', type: ColumnType.INTEGER })
|
|
78
|
+
* ]
|
|
79
|
+
* });
|
|
80
|
+
*```
|
|
81
|
+
*/
|
|
82
|
+
constructor(columns: Columns, options?: TableV2Options);
|
|
83
|
+
/**
|
|
84
|
+
* @deprecated This constructor will be removed in the next major release.
|
|
85
|
+
* Use the new constructor shown below instead as this does not show types.
|
|
86
|
+
* @example
|
|
87
|
+
* <caption>Use this instead</caption>
|
|
88
|
+
* ```javascript
|
|
89
|
+
* const table = new Table(
|
|
90
|
+
* {
|
|
91
|
+
* name: column.text,
|
|
92
|
+
* age: column.integer
|
|
93
|
+
* },
|
|
94
|
+
* { indexes: { nameIndex: ['name'] } }
|
|
95
|
+
* );
|
|
96
|
+
*```
|
|
97
|
+
*/
|
|
22
98
|
constructor(options: TableOptions);
|
|
99
|
+
private isTableV1;
|
|
100
|
+
private initTableV1;
|
|
101
|
+
private initTableV2;
|
|
23
102
|
get name(): string;
|
|
24
103
|
get viewNameOverride(): string | undefined;
|
|
25
104
|
get viewName(): string;
|
|
26
105
|
get columns(): Column[];
|
|
106
|
+
get columnMap(): Columns;
|
|
27
107
|
get indexes(): Index[];
|
|
28
108
|
get localOnly(): boolean;
|
|
29
109
|
get insertOnly(): boolean;
|
|
@@ -37,14 +117,14 @@ export declare class Table {
|
|
|
37
117
|
insert_only: boolean;
|
|
38
118
|
columns: {
|
|
39
119
|
name: string;
|
|
40
|
-
type:
|
|
120
|
+
type: ColumnType | undefined;
|
|
41
121
|
}[];
|
|
42
122
|
indexes: {
|
|
43
123
|
name: string;
|
|
44
124
|
columns: {
|
|
45
125
|
name: string;
|
|
46
126
|
ascending: boolean | undefined;
|
|
47
|
-
type:
|
|
127
|
+
type: ColumnType;
|
|
48
128
|
}[];
|
|
49
129
|
}[];
|
|
50
130
|
};
|
package/lib/db/schema/Table.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import { Column } from '
|
|
1
|
+
import { Column, ColumnType, MAX_AMOUNT_OF_COLUMNS } from './Column';
|
|
2
|
+
import { Index } from './Index';
|
|
3
|
+
import { IndexedColumn } from './IndexedColumn';
|
|
2
4
|
export const DEFAULT_TABLE_OPTIONS = {
|
|
3
5
|
indexes: [],
|
|
4
6
|
insertOnly: false,
|
|
@@ -7,24 +9,67 @@ export const DEFAULT_TABLE_OPTIONS = {
|
|
|
7
9
|
export const InvalidSQLCharacters = /["'%,.#\s[\]]/;
|
|
8
10
|
export class Table {
|
|
9
11
|
options;
|
|
12
|
+
_mappedColumns;
|
|
10
13
|
static createLocalOnly(options) {
|
|
11
14
|
return new Table({ ...options, localOnly: true, insertOnly: false });
|
|
12
15
|
}
|
|
13
16
|
static createInsertOnly(options) {
|
|
14
17
|
return new Table({ ...options, localOnly: false, insertOnly: true });
|
|
15
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* Create a table.
|
|
21
|
+
* @deprecated This was only only included for TableV2 and is no longer necessary.
|
|
22
|
+
* Prefer to use new Table() directly.
|
|
23
|
+
*
|
|
24
|
+
* TODO remove in the next major release.
|
|
25
|
+
*/
|
|
16
26
|
static createTable(name, table) {
|
|
17
27
|
return new Table({
|
|
18
28
|
name,
|
|
19
|
-
columns:
|
|
29
|
+
columns: table.columns,
|
|
20
30
|
indexes: table.indexes,
|
|
21
31
|
localOnly: table.options.localOnly,
|
|
22
32
|
insertOnly: table.options.insertOnly,
|
|
23
33
|
viewName: table.options.viewName
|
|
24
34
|
});
|
|
25
35
|
}
|
|
26
|
-
constructor(
|
|
27
|
-
this.
|
|
36
|
+
constructor(optionsOrColumns, v2Options) {
|
|
37
|
+
if (this.isTableV1(optionsOrColumns)) {
|
|
38
|
+
this.initTableV1(optionsOrColumns);
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
this.initTableV2(optionsOrColumns, v2Options);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
isTableV1(arg) {
|
|
45
|
+
return 'columns' in arg && Array.isArray(arg.columns);
|
|
46
|
+
}
|
|
47
|
+
initTableV1(options) {
|
|
48
|
+
this.options = {
|
|
49
|
+
...options,
|
|
50
|
+
indexes: options.indexes || [],
|
|
51
|
+
insertOnly: options.insertOnly ?? DEFAULT_TABLE_OPTIONS.insertOnly,
|
|
52
|
+
localOnly: options.localOnly ?? DEFAULT_TABLE_OPTIONS.localOnly
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
initTableV2(columns, options) {
|
|
56
|
+
const convertedColumns = Object.entries(columns).map(([name, columnInfo]) => new Column({ name, type: columnInfo.type }));
|
|
57
|
+
const convertedIndexes = Object.entries(options?.indexes ?? {}).map(([name, columnNames]) => new Index({
|
|
58
|
+
name,
|
|
59
|
+
columns: columnNames.map((name) => new IndexedColumn({
|
|
60
|
+
name: name.replace(/^-/, ''),
|
|
61
|
+
ascending: !name.startsWith('-')
|
|
62
|
+
}))
|
|
63
|
+
}));
|
|
64
|
+
this.options = {
|
|
65
|
+
name: '',
|
|
66
|
+
columns: convertedColumns,
|
|
67
|
+
indexes: convertedIndexes,
|
|
68
|
+
insertOnly: options?.insertOnly ?? DEFAULT_TABLE_OPTIONS.insertOnly,
|
|
69
|
+
localOnly: options?.localOnly ?? DEFAULT_TABLE_OPTIONS.localOnly,
|
|
70
|
+
viewName: options?.viewName
|
|
71
|
+
};
|
|
72
|
+
this._mappedColumns = columns;
|
|
28
73
|
}
|
|
29
74
|
get name() {
|
|
30
75
|
return this.options.name;
|
|
@@ -38,6 +83,13 @@ export class Table {
|
|
|
38
83
|
get columns() {
|
|
39
84
|
return this.options.columns;
|
|
40
85
|
}
|
|
86
|
+
get columnMap() {
|
|
87
|
+
return (this._mappedColumns ??
|
|
88
|
+
this.columns.reduce((hash, column) => {
|
|
89
|
+
hash[column.name] = { type: column.type ?? ColumnType.TEXT };
|
|
90
|
+
return hash;
|
|
91
|
+
}, {}));
|
|
92
|
+
}
|
|
41
93
|
get indexes() {
|
|
42
94
|
return this.options.indexes ?? [];
|
|
43
95
|
}
|
|
@@ -69,28 +121,31 @@ export class Table {
|
|
|
69
121
|
if (this.viewNameOverride && InvalidSQLCharacters.test(this.viewNameOverride)) {
|
|
70
122
|
throw new Error(`Invalid characters in view name: ${this.viewNameOverride}`);
|
|
71
123
|
}
|
|
124
|
+
if (this.columns.length > MAX_AMOUNT_OF_COLUMNS) {
|
|
125
|
+
throw new Error(`Table has too many columns. The maximum number of columns is ${MAX_AMOUNT_OF_COLUMNS}.`);
|
|
126
|
+
}
|
|
72
127
|
const columnNames = new Set();
|
|
73
128
|
columnNames.add('id');
|
|
74
129
|
for (const column of this.columns) {
|
|
75
130
|
const { name: columnName } = column;
|
|
76
|
-
if (column.name
|
|
77
|
-
throw new Error(
|
|
131
|
+
if (column.name === 'id') {
|
|
132
|
+
throw new Error(`An id column is automatically added, custom id columns are not supported`);
|
|
78
133
|
}
|
|
79
134
|
if (columnNames.has(columnName)) {
|
|
80
135
|
throw new Error(`Duplicate column ${columnName}`);
|
|
81
136
|
}
|
|
82
137
|
if (InvalidSQLCharacters.test(columnName)) {
|
|
83
|
-
throw new Error(`Invalid characters in column name: $
|
|
138
|
+
throw new Error(`Invalid characters in column name: ${column.name}`);
|
|
84
139
|
}
|
|
85
140
|
columnNames.add(columnName);
|
|
86
141
|
}
|
|
87
142
|
const indexNames = new Set();
|
|
88
143
|
for (const index of this.indexes) {
|
|
89
144
|
if (indexNames.has(index.name)) {
|
|
90
|
-
throw new Error(`Duplicate index $
|
|
145
|
+
throw new Error(`Duplicate index ${index.name}`);
|
|
91
146
|
}
|
|
92
147
|
if (InvalidSQLCharacters.test(index.name)) {
|
|
93
|
-
throw new Error(`Invalid characters in index name: $
|
|
148
|
+
throw new Error(`Invalid characters in index name: ${index.name}`);
|
|
94
149
|
}
|
|
95
150
|
for (const column of index.columns) {
|
|
96
151
|
if (!columnNames.has(column.name)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Table.js","sourceRoot":"","sources":["../../../src/db/schema/Table.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"Table.js","sourceRoot":"","sources":["../../../src/db/schema/Table.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,30 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
real: BaseColumnType<number | null>;
|
|
10
|
-
};
|
|
11
|
-
export type ColumnsType = Record<string, BaseColumnType<any>>;
|
|
12
|
-
export type ExtractColumnValueType<T extends BaseColumnType<any>> = T extends BaseColumnType<infer R> ? R : unknown;
|
|
13
|
-
export type RowType<T extends TableV2<any>> = {
|
|
14
|
-
[K in keyof T['columns']]: ExtractColumnValueType<T['columns'][K]>;
|
|
15
|
-
} & {
|
|
16
|
-
id: string;
|
|
17
|
-
};
|
|
18
|
-
export type IndexShorthand = Record<string, string[]>;
|
|
19
|
-
export interface TableV2Options {
|
|
20
|
-
indexes?: IndexShorthand;
|
|
21
|
-
localOnly?: boolean;
|
|
22
|
-
insertOnly?: boolean;
|
|
23
|
-
viewName?: string;
|
|
24
|
-
}
|
|
25
|
-
export declare class TableV2<Columns extends ColumnsType = ColumnsType> {
|
|
26
|
-
columns: Columns;
|
|
27
|
-
options: TableV2Options;
|
|
28
|
-
indexes: Index[];
|
|
29
|
-
constructor(columns: Columns, options?: TableV2Options);
|
|
1
|
+
import { ColumnsType } from './Column';
|
|
2
|
+
import { Table } from './Table';
|
|
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> {
|
|
30
9
|
}
|
package/lib/db/schema/TableV2.js
CHANGED
|
@@ -1,44 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
import { IndexedColumn } from './IndexedColumn';
|
|
4
|
-
const text = {
|
|
5
|
-
type: ColumnType.TEXT
|
|
6
|
-
};
|
|
7
|
-
const integer = {
|
|
8
|
-
type: ColumnType.INTEGER
|
|
9
|
-
};
|
|
10
|
-
const real = {
|
|
11
|
-
type: ColumnType.REAL
|
|
12
|
-
};
|
|
13
|
-
export const column = {
|
|
14
|
-
text,
|
|
15
|
-
integer,
|
|
16
|
-
real
|
|
17
|
-
};
|
|
18
|
-
/*
|
|
1
|
+
import { Table } from './Table';
|
|
2
|
+
/**
|
|
19
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.
|
|
20
6
|
*/
|
|
21
|
-
export class TableV2 {
|
|
22
|
-
columns;
|
|
23
|
-
options;
|
|
24
|
-
indexes;
|
|
25
|
-
constructor(columns, options = {}) {
|
|
26
|
-
this.columns = columns;
|
|
27
|
-
this.options = options;
|
|
28
|
-
if (options?.indexes) {
|
|
29
|
-
this.indexes = Object.entries(options.indexes).map(([name, columns]) => {
|
|
30
|
-
if (name.startsWith('-')) {
|
|
31
|
-
return new Index({
|
|
32
|
-
name: name.substring(1),
|
|
33
|
-
columns: columns.map((c) => new IndexedColumn({ name: c, ascending: false }))
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
return new Index({
|
|
37
|
-
name: name,
|
|
38
|
-
columns: columns.map((c) => new IndexedColumn({ name: c, ascending: true }))
|
|
39
|
-
});
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
}
|
|
7
|
+
export class TableV2 extends Table {
|
|
43
8
|
}
|
|
44
9
|
//# sourceMappingURL=TableV2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableV2.js","sourceRoot":"","sources":["../../../src/db/schema/TableV2.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TableV2.js","sourceRoot":"","sources":["../../../src/db/schema/TableV2.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC;;;;EAIE;AACF,MAAM,OAAO,OAAmD,SAAQ,KAAc;CAAG"}
|
package/lib/index.d.ts
CHANGED
|
@@ -22,14 +22,13 @@ export * from './db/schema/Schema';
|
|
|
22
22
|
export * from './db/schema/Table';
|
|
23
23
|
export * from './db/schema/Index';
|
|
24
24
|
export * from './db/schema/IndexedColumn';
|
|
25
|
+
export * from './db/schema/Column';
|
|
26
|
+
export * from './db/schema/TableV2';
|
|
25
27
|
export * from './db/crud/SyncStatus';
|
|
26
28
|
export * from './db/crud/UploadQueueStatus';
|
|
27
29
|
export * from './db/DBAdapter';
|
|
28
|
-
export * from './db/Column';
|
|
29
|
-
export * from './db/schema/TableV2';
|
|
30
30
|
export * from './utils/AbortOperation';
|
|
31
31
|
export * from './utils/BaseObserver';
|
|
32
|
-
export * from './utils/strings';
|
|
33
32
|
export * from './utils/DataStream';
|
|
34
33
|
export * from './utils/parseQuery';
|
|
35
34
|
export * from './types/types';
|
package/lib/index.js
CHANGED
|
@@ -22,14 +22,13 @@ export * from './db/schema/Schema';
|
|
|
22
22
|
export * from './db/schema/Table';
|
|
23
23
|
export * from './db/schema/Index';
|
|
24
24
|
export * from './db/schema/IndexedColumn';
|
|
25
|
+
export * from './db/schema/Column';
|
|
26
|
+
export * from './db/schema/TableV2';
|
|
25
27
|
export * from './db/crud/SyncStatus';
|
|
26
28
|
export * from './db/crud/UploadQueueStatus';
|
|
27
29
|
export * from './db/DBAdapter';
|
|
28
|
-
export * from './db/Column';
|
|
29
|
-
export * from './db/schema/TableV2';
|
|
30
30
|
export * from './utils/AbortOperation';
|
|
31
31
|
export * from './utils/BaseObserver';
|
|
32
|
-
export * from './utils/strings';
|
|
33
32
|
export * from './utils/DataStream';
|
|
34
33
|
export * from './utils/parseQuery';
|
|
35
34
|
export * from './types/types';
|
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,uCAAuC,CAAC;AACtD,cAAc,yBAAyB,CAAC;AACxC,cAAc,+CAA+C,CAAC;AAC9D,cAAc,0CAA0C,CAAC;AACzD,cAAc,2CAA2C,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,SAAS,EAAQ,MAAM,gCAAgC,CAAC;AAC7E,cAAc,0CAA0C,CAAC;AACzD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,sCAAsC,CAAC;AACrD,cAAc,oCAAoC,CAAC;AACnD,cAAc,qCAAqC,CAAC;AACpD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC;AAChD,cAAc,qCAAqC,CAAC;AACpD,cAAc,0DAA0D,CAAC;AACzE,cAAc,2CAA2C,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oCAAoC,CAAC;AACnD,cAAc,uCAAuC,CAAC;AACtD,cAAc,yBAAyB,CAAC;AACxC,cAAc,+CAA+C,CAAC;AAC9D,cAAc,0CAA0C,CAAC;AACzD,cAAc,2CAA2C,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,SAAS,EAAQ,MAAM,gCAAgC,CAAC;AAC7E,cAAc,0CAA0C,CAAC;AACzD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,sCAAsC,CAAC;AACrD,cAAc,oCAAoC,CAAC;AACnD,cAAc,qCAAqC,CAAC;AACpD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC;AAChD,cAAc,qCAAqC,CAAC;AACpD,cAAc,0DAA0D,CAAC;AACzE,cAAc,2CAA2C,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gBAAgB,CAAC;AAE/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AAEnC,cAAc,eAAe,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@powersync/common",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.17.0",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"registry": "https://registry.npmjs.org/",
|
|
6
6
|
"access": "public"
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
"rsocket-websocket-client": "1.0.0-alpha.3",
|
|
47
47
|
"text-encoding": "^0.7.0",
|
|
48
48
|
"typescript": "^5.5.3",
|
|
49
|
-
"vitest": "^
|
|
49
|
+
"vitest": "^2.0.5",
|
|
50
50
|
"web-streams-polyfill": "3.2.1"
|
|
51
51
|
},
|
|
52
52
|
"scripts": {
|
package/lib/db/Column.d.ts
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
export declare enum ColumnType {
|
|
2
|
-
TEXT = "TEXT",
|
|
3
|
-
INTEGER = "INTEGER",
|
|
4
|
-
REAL = "REAL"
|
|
5
|
-
}
|
|
6
|
-
export interface ColumnOptions {
|
|
7
|
-
name: string;
|
|
8
|
-
type?: ColumnType;
|
|
9
|
-
}
|
|
10
|
-
export declare class Column {
|
|
11
|
-
protected options: ColumnOptions;
|
|
12
|
-
constructor(options: ColumnOptions);
|
|
13
|
-
get name(): string;
|
|
14
|
-
get type(): ColumnType | undefined;
|
|
15
|
-
toJSON(): {
|
|
16
|
-
name: string;
|
|
17
|
-
type: ColumnType | undefined;
|
|
18
|
-
};
|
|
19
|
-
}
|
package/lib/db/Column.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Column.js","sourceRoot":"","sources":["../../src/db/Column.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,MAAM,CAAN,IAAY,UAIX;AAJD,WAAY,UAAU;IACpB,2BAAa,CAAA;IACb,iCAAmB,CAAA;IACnB,2BAAa,CAAA;AACf,CAAC,EAJW,UAAU,KAAV,UAAU,QAIrB;AAOD,MAAM,OAAO,MAAM;IACK;IAAtB,YAAsB,OAAsB;QAAtB,YAAO,GAAP,OAAO,CAAe;IAAG,CAAC;IAEhD,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3B,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3B,CAAC;IAED,MAAM;QACJ,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC;IACJ,CAAC;CACF"}
|
package/lib/utils/strings.d.ts
DELETED