@powersync/common 0.0.0-dev-20260216124709 → 0.0.0-dev-20260305092446

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.
@@ -1 +1 @@
1
- {"version":3,"file":"Schema.js","sourceRoot":"","sources":["../../../src/db/schema/Schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAgB,MAAM,eAAe,CAAC;AASvD;;GAEG;AACH,MAAM,OAAO,MAAM;IACjB;;MAEE;IACO,KAAK,CAAqB;IAC1B,KAAK,CAAI;IACT,MAAM,CAAU;IAChB,SAAS,CAAa;IAE/B,YAAY,MAAmB;QAC7B,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B;;;;cAIE;YACF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,IAAI,KAAK,CAAC,IAAI,KAAK,EAAE,EAAE,CAAC;oBACtB,MAAM,IAAI,KAAK,CACb,2KAA2K,CAC5K,CAAC;gBACJ,CAAC;YACH,CAAC;YACD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,4DAA4D;YAC5D,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,WAAW,CAC7B,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAC1F,CAAC;YACP,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACtB,CAAC;IAED;;;;;;;;;OASG;IACH,aAAa,CAAC,MAAoC;QAChD,KAAK,MAAM,CAAC,IAAI,EAAE,kBAAkB,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAChE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED,QAAQ;QACN,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;IAED,MAAM;QACJ,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;YAC1C,UAAU,EAAE,IAAI,CAAC,SAAS;SAC3B,CAAC;IACJ,CAAC;CACF"}
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"}
@@ -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
- interface SharedTableOptions {
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
- name: string;
136
- view_name: string;
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;
@@ -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":"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"}
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 * from './db/schema/RawTable.js';
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;AAC7C,cAAc,yBAAyB,CAAC;AACxC,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"}
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@powersync/common",
3
- "version": "0.0.0-dev-20260216124709",
3
+ "version": "0.0.0-dev-20260305092446",
4
4
  "publishConfig": {
5
5
  "registry": "https://registry.npmjs.org/",
6
6
  "access": "public"
@@ -223,6 +223,12 @@ 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
+ * The destination table persists beyond this trigger's lifetime and is not automatically dropped when the trigger is removed.
229
+ * Additionally, if the trigger already exists with the same destination, it will be reused instead of failing with a name conflict error.
230
+ */
231
+ persistDestination?: boolean;
226
232
  }
227
233
 
228
234
  /**
@@ -201,6 +201,7 @@ export class TriggerManagerImpl implements TriggerManager {
201
201
  columns,
202
202
  when,
203
203
  hooks,
204
+ persistDestination = false,
204
205
  // Fall back to the provided default if not given on this level
205
206
  useStorage = this.defaultConfig.useStorageByDefault
206
207
  } = options;
@@ -268,11 +269,13 @@ export class TriggerManagerImpl implements TriggerManager {
268
269
  * we need to ensure we can cleanup the created resources.
269
270
  * We unfortunately cannot rely on transaction rollback.
270
271
  */
271
- const cleanup = async () => {
272
+ const cleanup = async (force?: boolean) => {
272
273
  disposeWarningListener();
273
274
  return this.db.writeLock(async (tx) => {
274
275
  await this.removeTriggers(tx, triggerIds);
275
- await tx.execute(/* sql */ `DROP TABLE IF EXISTS ${destination};`);
276
+ if (!persistDestination || force) {
277
+ await tx.execute(/* sql */ `DROP TABLE IF EXISTS ${destination};`);
278
+ }
276
279
  await releaseStorageClaim?.();
277
280
  });
278
281
  };
@@ -281,7 +284,7 @@ export class TriggerManagerImpl implements TriggerManager {
281
284
  // Allow user code to execute in this lock context before the trigger is created.
282
285
  await hooks?.beforeCreate?.(tx);
283
286
  await tx.execute(/* sql */ `
284
- CREATE ${tableTriggerTypeClause} TABLE ${destination} (
287
+ CREATE ${tableTriggerTypeClause} TABLE ${persistDestination ? 'IF NOT EXISTS ' : ''}${destination} (
285
288
  operation_id INTEGER PRIMARY KEY AUTOINCREMENT,
286
289
  id TEXT,
287
290
  operation TEXT,
@@ -1,8 +1,23 @@
1
+ import { TableOrRawTableOptions } from './Table.js';
2
+
1
3
  /**
2
- * A pending variant of a {@link RawTable} that doesn't have a name (because it would be inferred when creating the
3
- * schema).
4
+ * Instructs PowerSync to sync data into a "raw" table.
5
+ *
6
+ * Since raw tables are not backed by JSON, running complex queries on them may be more efficient. Further, they allow
7
+ * using client-side table and column constraints.
8
+ *
9
+ * To collect local writes to raw tables with PowerSync, custom triggers are required. See
10
+ * {@link https://docs.powersync.com/usage/use-case-examples/raw-tables the documentation} for details and an example on
11
+ * using raw tables.
12
+ *
13
+ * Note that raw tables are only supported when using the new `SyncClientImplementation.rust` sync client.
14
+ *
15
+ * @experimental Please note that this feature is experimental at the moment, and not covered by PowerSync semver or
16
+ * stability guarantees.
4
17
  */
5
- export type RawTableType = {
18
+ export type RawTableType = RawTableTypeWithStatements | InferredRawTableType;
19
+
20
+ interface RawTableTypeWithStatements {
6
21
  /**
7
22
  * The statement to run when PowerSync detects that a row needs to be inserted or updated.
8
23
  */
@@ -11,7 +26,44 @@ export type RawTableType = {
11
26
  * The statement to run when PowerSync detects that a row needs to be deleted.
12
27
  */
13
28
  delete: PendingStatement;
14
- };
29
+
30
+ /**
31
+ * An optional statement to run when `disconnectAndClear()` is called on a PowerSync database.
32
+ */
33
+ clear?: string;
34
+ }
35
+
36
+ /**
37
+ * The schema of a {@link RawTableType} in the local database.
38
+ *
39
+ * This information is optional when declaring raw tables. However, providing it allows the sync client to infer `put`
40
+ * and `delete` statements automatically.
41
+ */
42
+ interface RawTableSchema extends TableOrRawTableOptions {
43
+ /**
44
+ * The actual name of the raw table in the local schema.
45
+ *
46
+ * Unlike {@link RawTable.name}, which describes the name of synced tables to match, this reflects the SQLite table
47
+ * name. This is used to infer {@link RawTableType.put} and {@link RawTableType.delete} statements for the sync
48
+ * client. It can also be used to auto-generate triggers forwarding writes on raw tables into the CRUD upload queue
49
+ * (using the `powersync_create_raw_table_crud_trigger` SQL function).
50
+ *
51
+ * When absent, defaults to {@link RawTable.name}.
52
+ */
53
+ tableName?: string;
54
+
55
+ /**
56
+ * An optional filter of columns that should be synced.
57
+ *
58
+ * By default, all columns in a raw table are considered for sync. If a filter is specified, PowerSync treats
59
+ * unmatched columns as local-only and will not attempt to sync them.
60
+ */
61
+ syncedColumns?: string[];
62
+ }
63
+
64
+ interface InferredRawTableType extends Partial<RawTableTypeWithStatements> {
65
+ schema: RawTableSchema;
66
+ }
15
67
 
16
68
  /**
17
69
  * A parameter to use as part of {@link PendingStatement}.
@@ -21,8 +73,10 @@ export type RawTableType = {
21
73
  *
22
74
  * For insert and replace operations, the values of columns in the table are available as parameters through
23
75
  * `{Column: 'name'}`.
76
+ * The `"Rest"` parameter gets resolved to a JSON object covering all values from the synced row that haven't been
77
+ * covered by a `Column` parameter.
24
78
  */
25
- export type PendingStatementParameter = 'Id' | { Column: string };
79
+ export type PendingStatementParameter = 'Id' | { Column: string } | 'Rest';
26
80
 
27
81
  /**
28
82
  * A statement that the PowerSync client should use to insert or delete data into a table managed by the user.
@@ -33,35 +87,16 @@ export type PendingStatement = {
33
87
  };
34
88
 
35
89
  /**
36
- * Instructs PowerSync to sync data into a "raw" table.
37
- *
38
- * Since raw tables are not backed by JSON, running complex queries on them may be more efficient. Further, they allow
39
- * using client-side table and column constraints.
40
- *
41
- * To collect local writes to raw tables with PowerSync, custom triggers are required. See
42
- * {@link https://docs.powersync.com/usage/use-case-examples/raw-tables the documentation} for details and an example on
43
- * using raw tables.
44
- *
45
- * Note that raw tables are only supported when using the new `SyncClientImplementation.rust` sync client.
46
- *
47
- * @experimental Please note that this feature is experimental at the moment, and not covered by PowerSync semver or
48
- * stability guarantees.
90
+ * @internal
49
91
  */
50
- export class RawTable implements RawTableType {
92
+ export type RawTable<T extends RawTableType = RawTableType> = T & {
51
93
  /**
52
94
  * The name of the table.
53
95
  *
54
- * This does not have to match the actual table name in the schema - {@link put} and {@link delete} are free to use
55
- * another table. Instead, this name is used by the sync client to recognize that operations on this table (as it
56
- * appears in the source / backend database) are to be handled specially.
96
+ * This does not have to match the actual table name in the schema - {@link RawTableType.put} and
97
+ * {@link RawTableType.delete} are free to use another table. Instead, this name is used by the sync client to
98
+ * recognize that operations on this table (as it appears in the source / backend database) are to be handled
99
+ * specially.
57
100
  */
58
101
  name: string;
59
- put: PendingStatement;
60
- delete: PendingStatement;
61
-
62
- constructor(name: string, type: RawTableType) {
63
- this.name = name;
64
- this.put = type.put;
65
- this.delete = type.delete;
66
- }
67
- }
102
+ };
@@ -1,3 +1,4 @@
1
+ import { encodeTableOptions } from './internal.js';
1
2
  import { RawTable, RawTableType } from './RawTable.js';
2
3
  import { RowType, Table } from './Table.js';
3
4
 
@@ -57,7 +58,7 @@ export class Schema<S extends SchemaType = SchemaType> {
57
58
  */
58
59
  withRawTables(tables: Record<string, RawTableType>) {
59
60
  for (const [name, rawTableDefinition] of Object.entries(tables)) {
60
- this.rawTables.push(new RawTable(name, rawTableDefinition));
61
+ this.rawTables.push({ name, ...rawTableDefinition });
61
62
  }
62
63
  }
63
64
 
@@ -70,7 +71,31 @@ export class Schema<S extends SchemaType = SchemaType> {
70
71
  toJSON() {
71
72
  return {
72
73
  tables: this.tables.map((t) => t.toJSON()),
73
- raw_tables: this.rawTables
74
+ raw_tables: this.rawTables.map(Schema.rawTableToJson)
74
75
  };
75
76
  }
77
+
78
+ /**
79
+ * Returns a representation of the raw table that is understood by the PowerSync SQLite core extension.
80
+ *
81
+ * The output of this can be passed through `JSON.serialize` and then used in `powersync_create_raw_table_crud_trigger`
82
+ * to define triggers for this table.
83
+ */
84
+ static rawTableToJson(table: RawTable): unknown {
85
+ const serialized: any = {
86
+ name: table.name,
87
+ put: table.put,
88
+ delete: table.delete,
89
+ clear: table.clear
90
+ };
91
+ if ('schema' in table) {
92
+ // We have schema options, those are flattened into the outer JSON object for the core extension.
93
+ const schema = table.schema;
94
+ serialized.table_name = schema.tableName ?? table.name;
95
+ serialized.synced_columns = schema.syncedColumns;
96
+ Object.assign(serialized, encodeTableOptions(table.schema));
97
+ }
98
+
99
+ return serialized;
100
+ }
76
101
  }
@@ -8,17 +8,24 @@ import {
8
8
  } from './Column.js';
9
9
  import { Index } from './Index.js';
10
10
  import { IndexedColumn } from './IndexedColumn.js';
11
+ import { encodeTableOptions } from './internal.js';
11
12
  import { TableV2 } from './TableV2.js';
12
13
 
13
- interface SharedTableOptions {
14
+ /**
15
+ * Options that apply both to JSON-based tables and raw tables.
16
+ */
17
+ export interface TableOrRawTableOptions {
14
18
  localOnly?: boolean;
15
19
  insertOnly?: boolean;
16
- viewName?: string;
17
20
  trackPrevious?: boolean | TrackPreviousOptions;
18
21
  trackMetadata?: boolean;
19
22
  ignoreEmptyUpdates?: boolean;
20
23
  }
21
24
 
25
+ interface SharedTableOptions extends TableOrRawTableOptions {
26
+ viewName?: string;
27
+ }
28
+
22
29
  /** Whether to include previous column values when PowerSync tracks local changes.
23
30
  *
24
31
  * Including old values may be helpful for some backend connector implementations, which is
@@ -341,19 +348,12 @@ export class Table<Columns extends ColumnsType = ColumnsType> {
341
348
  }
342
349
 
343
350
  toJSON() {
344
- const trackPrevious = this.trackPrevious;
345
-
346
351
  return {
347
352
  name: this.name,
348
353
  view_name: this.viewName,
349
- local_only: this.localOnly,
350
- insert_only: this.insertOnly,
351
- include_old: trackPrevious && ((trackPrevious as any).columns ?? true),
352
- include_old_only_when_changed: typeof trackPrevious == 'object' && trackPrevious.onlyWhenChanged == true,
353
- include_metadata: this.trackMetadata,
354
- ignore_empty_update: this.ignoreEmptyUpdates,
355
354
  columns: this.columns.map((c) => c.toJSON()),
356
- indexes: this.indexes.map((e) => e.toJSON(this))
355
+ indexes: this.indexes.map((e) => e.toJSON(this)),
356
+ ...encodeTableOptions(this)
357
357
  };
358
358
  }
359
359
  }
@@ -0,0 +1,17 @@
1
+ import { TableOrRawTableOptions } from './Table.js';
2
+
3
+ /**
4
+ * @internal Not exported from `index.ts`.
5
+ */
6
+ export function encodeTableOptions(options: TableOrRawTableOptions) {
7
+ const trackPrevious = options.trackPrevious;
8
+
9
+ return {
10
+ local_only: options.localOnly,
11
+ insert_only: options.insertOnly,
12
+ include_old: trackPrevious && ((trackPrevious as any).columns ?? true),
13
+ include_old_only_when_changed: typeof trackPrevious == 'object' && trackPrevious.onlyWhenChanged == true,
14
+ include_metadata: options.trackMetadata,
15
+ ignore_empty_update: options.ignoreEmptyUpdates
16
+ };
17
+ }
package/src/index.ts CHANGED
@@ -39,7 +39,7 @@ export * from './db/DBAdapter.js';
39
39
  export * from './db/schema/Column.js';
40
40
  export * from './db/schema/Index.js';
41
41
  export * from './db/schema/IndexedColumn.js';
42
- export * from './db/schema/RawTable.js';
42
+ export { RawTableType, PendingStatementParameter, PendingStatement } from './db/schema/RawTable.js';
43
43
  export * from './db/schema/Schema.js';
44
44
  export * from './db/schema/Table.js';
45
45
  export * from './db/schema/TableV2.js';