@tursodatabase/sync-common 0.2.0-pre.1 → 0.2.0-pre.11

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/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  This package is the Turso Sync common JS library which is shared between final builds for Node and Browser.
4
4
 
5
- Do not use this package directly - instead you must use `@tursodatabase/sync` or `@tursodatabase/sync-browser`.
5
+ Do not use this package directly - instead you must use `@tursodatabase/sync` or `@tursodatabase/sync-wasm`.
6
6
 
7
7
  > **⚠️ Warning:** This software is ALPHA, only use for development, testing, and experimentation. We are working to make it production ready, but do not use it for critical data right now.
8
8
 
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { run, memoryIO } from "./run.js";
2
- import { SyncOpts, ProtocolIo, RunOpts, DatabaseRowMutation, DatabaseRowStatement, DatabaseRowTransformResult } from "./types.js";
3
- export { run, memoryIO, };
4
- export type { SyncOpts, ProtocolIo, RunOpts, DatabaseRowMutation, DatabaseRowStatement, DatabaseRowTransformResult };
1
+ import { run, memoryIO, SyncEngineGuards } from "./run.js";
2
+ import { DatabaseOpts, ProtocolIo, RunOpts, DatabaseRowMutation, DatabaseRowStatement, DatabaseRowTransformResult, DatabaseStats, DatabaseChangeType, EncryptionOpts } from "./types.js";
3
+ export { run, memoryIO, SyncEngineGuards };
4
+ export type { DatabaseStats, DatabaseOpts, DatabaseChangeType, DatabaseRowMutation, DatabaseRowStatement, DatabaseRowTransformResult, EncryptionOpts, ProtocolIo, RunOpts, };
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAA;AAEjI,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,CAAA;AACzB,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAC1D,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,aAAa,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAExL,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAA;AAC1C,YAAY,EACR,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,0BAA0B,EAC1B,cAAc,EAEd,UAAU,EACV,OAAO,GACV,CAAA"}
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import { run, memoryIO } from "./run.js";
2
- export { run, memoryIO, };
1
+ import { run, memoryIO, SyncEngineGuards } from "./run.js";
2
+ export { run, memoryIO, SyncEngineGuards };
package/dist/run.d.ts CHANGED
@@ -1,4 +1,16 @@
1
1
  import { ProtocolIo, RunOpts } from "./types.js";
2
+ import { AsyncLock } from "@tursodatabase/database-common";
2
3
  export declare function memoryIO(): ProtocolIo;
3
4
  export declare function run(opts: RunOpts, io: ProtocolIo, engine: any, generator: any): Promise<any>;
5
+ export declare class SyncEngineGuards {
6
+ waitLock: AsyncLock;
7
+ pushLock: AsyncLock;
8
+ pullLock: AsyncLock;
9
+ checkpointLock: AsyncLock;
10
+ constructor();
11
+ wait(f: () => Promise<any>): Promise<any>;
12
+ push(f: () => Promise<void>): Promise<void>;
13
+ apply(f: () => Promise<void>): Promise<void>;
14
+ checkpoint(f: () => Promise<void>): Promise<void>;
15
+ }
4
16
  //# sourceMappingURL=run.d.ts.map
package/dist/run.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../run.ts"],"names":[],"mappings":"AAEA,OAAO,EAAqB,UAAU,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AA2FpE,wBAAgB,QAAQ,IAAI,UAAU,CAUrC;AAGD,wBAAsB,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAoBlG"}
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../run.ts"],"names":[],"mappings":"AAEA,OAAO,EAAqB,UAAU,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAwF3D,wBAAgB,QAAQ,IAAI,UAAU,CAUrC;AAGD,wBAAsB,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAuBlG;AAED,qBAAa,gBAAgB;IACzB,QAAQ,EAAE,SAAS,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;IACpB,cAAc,EAAE,SAAS,CAAC;;IAOpB,IAAI,CAAC,CAAC,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;IAQzC,IAAI,CAAC,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC;IAY3B,KAAK,CAAC,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC;IAc5B,UAAU,CAAC,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC;CAc1C"}
package/dist/run.js CHANGED
@@ -1,6 +1,5 @@
1
1
  "use strict";
2
- const GENERATOR_RESUME_IO = 0;
3
- const GENERATOR_RESUME_DONE = 1;
2
+ import { AsyncLock } from "@tursodatabase/database-common";
4
3
  function trackPromise(p) {
5
4
  let status = { promise: null, finished: false };
6
5
  status.promise = p.finally(() => status.finished = true);
@@ -14,7 +13,7 @@ async function process(opts, io, request) {
14
13
  const completion = request.completion();
15
14
  if (requestType.type == 'Http') {
16
15
  try {
17
- let headers = opts.headers;
16
+ let headers = typeof opts.headers === "function" ? opts.headers() : opts.headers;
18
17
  if (requestType.headers != null && requestType.headers.length > 0) {
19
18
  headers = { ...opts.headers };
20
19
  for (let header of requestType.headers) {
@@ -110,6 +109,10 @@ export async function run(opts, io, engine, generator) {
110
109
  if (type == 'SyncEngineStats') {
111
110
  return rest;
112
111
  }
112
+ if (type == 'SyncEngineChanges') {
113
+ //@ts-ignore
114
+ return rest.changes;
115
+ }
113
116
  for (let request = engine.protocolIo(); request != null; request = engine.protocolIo()) {
114
117
  tasks.push(trackPromise(process(opts, io, request)));
115
118
  }
@@ -117,5 +120,68 @@ export async function run(opts, io, engine, generator) {
117
120
  await Promise.all([engine.ioLoopAsync(), tasksRace]);
118
121
  tasks = tasks.filter(t => !t.finished);
119
122
  }
120
- return generator.take();
123
+ }
124
+ export class SyncEngineGuards {
125
+ waitLock;
126
+ pushLock;
127
+ pullLock;
128
+ checkpointLock;
129
+ constructor() {
130
+ this.waitLock = new AsyncLock();
131
+ this.pushLock = new AsyncLock();
132
+ this.pullLock = new AsyncLock();
133
+ this.checkpointLock = new AsyncLock();
134
+ }
135
+ async wait(f) {
136
+ try {
137
+ await this.waitLock.acquire();
138
+ return await f();
139
+ }
140
+ finally {
141
+ this.waitLock.release();
142
+ }
143
+ }
144
+ async push(f) {
145
+ try {
146
+ await this.pushLock.acquire();
147
+ await this.pullLock.acquire();
148
+ await this.checkpointLock.acquire();
149
+ return await f();
150
+ }
151
+ finally {
152
+ this.pushLock.release();
153
+ this.pullLock.release();
154
+ this.checkpointLock.release();
155
+ }
156
+ }
157
+ async apply(f) {
158
+ try {
159
+ await this.waitLock.acquire();
160
+ await this.pushLock.acquire();
161
+ await this.pullLock.acquire();
162
+ await this.checkpointLock.acquire();
163
+ return await f();
164
+ }
165
+ finally {
166
+ this.waitLock.release();
167
+ this.pushLock.release();
168
+ this.pullLock.release();
169
+ this.checkpointLock.release();
170
+ }
171
+ }
172
+ async checkpoint(f) {
173
+ try {
174
+ await this.waitLock.acquire();
175
+ await this.pushLock.acquire();
176
+ await this.pullLock.acquire();
177
+ await this.checkpointLock.acquire();
178
+ return await f();
179
+ }
180
+ finally {
181
+ this.waitLock.release();
182
+ this.pushLock.release();
183
+ this.pullLock.release();
184
+ this.checkpointLock.release();
185
+ }
186
+ }
121
187
  }
package/dist/types.d.ts CHANGED
@@ -1,60 +1,155 @@
1
1
  export declare const enum DatabaseChangeType {
2
- Insert = 0,
3
- Update = 1,
4
- Delete = 2
2
+ Insert = "insert",
3
+ Update = "update",
4
+ Delete = "delete"
5
5
  }
6
+ export interface DatabaseRowStatement {
7
+ /**
8
+ * SQL statements with positional placeholders (?)
9
+ */
10
+ sql: string;
11
+ /**
12
+ * values to substitute placeholders
13
+ */
14
+ values: Array<any>;
15
+ }
16
+ /**
17
+ * transformation result:
18
+ * - skip: ignore the mutation completely and do not apply it
19
+ * - rewrite: replace mutation with the provided statement
20
+ * - null: do not change mutation and keep it as is
21
+ */
22
+ export type DatabaseRowTransformResult = {
23
+ operation: 'skip';
24
+ } | {
25
+ operation: 'rewrite';
26
+ stmt: DatabaseRowStatement;
27
+ } | null;
6
28
  export interface DatabaseRowMutation {
29
+ /**
30
+ * unix seconds timestamp of the change
31
+ */
7
32
  changeTime: number;
33
+ /**
34
+ * table name of the change
35
+ */
8
36
  tableName: string;
37
+ /**
38
+ * rowid of the change
39
+ */
9
40
  id: number;
41
+ /**
42
+ * type of the change (insert/delete/update)
43
+ */
10
44
  changeType: DatabaseChangeType;
45
+ /**
46
+ * columns of the row before the change
47
+ */
11
48
  before?: Record<string, any>;
49
+ /**
50
+ * columns of the row after the change
51
+ */
12
52
  after?: Record<string, any>;
53
+ /**
54
+ * only updated columns of the row after the change
55
+ */
13
56
  updates?: Record<string, any>;
14
57
  }
15
- export type DatabaseRowTransformResult = {
16
- operation: 'skip';
17
- } | {
18
- operation: 'rewrite';
19
- stmt: DatabaseRowStatement;
20
- } | null;
21
58
  export type Transform = (arg: DatabaseRowMutation) => DatabaseRowTransformResult;
59
+ export interface EncryptionOpts {
60
+ key: string;
61
+ cipher: 'aes256gcm' | 'aes128gcm' | 'chacha20poly1305';
62
+ }
63
+ export interface DatabaseOpts {
64
+ /**
65
+ * local path where to store all synced database files (e.g. local.db)
66
+ * note, that synced database will write several files with that prefix
67
+ * (e.g. local.db-info, local.db-wal, etc)
68
+ * */
69
+ path: string;
70
+ /**
71
+ * optional url of the remote database (e.g. libsql://db-org.turso.io)
72
+ * (if omitted - local-only database will be created)
73
+ */
74
+ url?: string;
75
+ /**
76
+ * auth token for the remote database
77
+ * (can be either static string or function which will provide short-lived credentials for every new request)
78
+ */
79
+ authToken?: string | (() => string);
80
+ /**
81
+ * arbitrary client name which can be used to distinguish clients internally
82
+ * the library will gurantee uniquiness of the clientId by appending unique suffix to the clientName
83
+ */
84
+ clientName?: string;
85
+ /**
86
+ * optional encryption parameters if cloud database were encrypted by default
87
+ */
88
+ encryption?: EncryptionOpts;
89
+ /**
90
+ * optional callback which will be called for every mutation before sending it to the remote
91
+ * this callback can transform the update in order to support complex conflict resolution strategy
92
+ */
93
+ transform?: Transform;
94
+ /**
95
+ * optional long-polling timeout for pull operation
96
+ * if not set - no timeout is applied
97
+ */
98
+ longPollTimeoutMs?: number;
99
+ /**
100
+ * optional parameter to enable internal logging for the database
101
+ */
102
+ tracing?: 'error' | 'warn' | 'info' | 'debug' | 'trace';
103
+ }
104
+ export interface DatabaseStats {
105
+ /**
106
+ * amount of local changes not sent to the remote
107
+ */
108
+ operations: number;
109
+ /**
110
+ * size of the main WAL file in bytes
111
+ */
112
+ mainWal: number;
113
+ /**
114
+ * size of the revert WAL file in bytes
115
+ */
116
+ revertWal: number;
117
+ /**
118
+ * unix timestamp of last successful pull time
119
+ */
120
+ lastPullUnixTime: number;
121
+ /**
122
+ * unix timestamp of last successful push time
123
+ */
124
+ lastPushUnixTime: number | null;
125
+ /**
126
+ * opaque revision of the changes pulled locally from remote
127
+ * (can be used as e-tag, but string must not be interpreted in any way and must be used as opaque value)
128
+ */
129
+ revision: string | null;
130
+ }
22
131
  export interface RunOpts {
23
132
  preemptionMs: number;
24
133
  url: string;
25
134
  headers: {
26
135
  [K: string]: string;
27
- };
136
+ } | (() => {
137
+ [K: string]: string;
138
+ });
28
139
  transform?: Transform;
29
140
  }
30
141
  export interface ProtocolIo {
31
142
  read(path: string): Promise<Buffer | Uint8Array | null>;
32
143
  write(path: string, content: Buffer | Uint8Array): Promise<void>;
33
144
  }
34
- export interface SyncOpts {
35
- path: string;
36
- clientName?: string;
37
- url: string;
38
- authToken?: string;
39
- encryptionKey?: string;
40
- tablesIgnore?: string[];
41
- transform?: Transform;
42
- tracing?: string;
43
- }
44
- export interface DatabaseRowStatement {
45
- sql: string;
46
- values: Array<any>;
47
- }
48
145
  export type GeneratorResponse = {
49
146
  type: 'IO';
50
147
  } | {
51
148
  type: 'Done';
52
- } | {
149
+ } | ({
53
150
  type: 'SyncEngineStats';
54
- operations: number;
55
- mainWal: number;
56
- revertWal: number;
57
- lastPullUnixTime: number;
58
- lastPushUnixTime: number | null;
151
+ } & DatabaseStats) | {
152
+ type: 'SyncEngineChanges';
153
+ changes: any;
59
154
  };
60
155
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,CAAC,KAAK,MAAM,kBAAkB;IACxC,MAAM,IAAI;IACV,MAAM,IAAI;IACV,MAAM,IAAI;CACb;AAED,MAAM,WAAW,mBAAmB;IAChC,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,EAAE,EAAE,MAAM,CAAA;IACV,UAAU,EAAE,kBAAkB,CAAA;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAChC;AAED,MAAM,MAAM,0BAA0B,GAAG;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,SAAS,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,oBAAoB,CAAA;CAAE,GAAG,IAAI,CAAC;AAC7H,MAAM,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE,mBAAmB,KAAK,0BAA0B,CAAC;AACjF,MAAM,WAAW,OAAO;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE;QAAE,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;IAChC,SAAS,CAAC,EAAE,SAAS,CAAC;CACzB;AAED,MAAM,WAAW,UAAU;IACvB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC,CAAC;IACxD,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpE;AAED,MAAM,WAAW,QAAQ;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACjC,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,CAAA;CACrB;AAED,MAAM,MAAM,iBAAiB,GACvB;IAAE,IAAI,EAAE,IAAI,CAAA;CAAE,GACd;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tursodatabase/sync-common",
3
- "version": "0.2.0-pre.1",
3
+ "version": "0.2.0-pre.11",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/tursodatabase/turso"
@@ -21,5 +21,8 @@
21
21
  "tsc-build": "npm exec tsc",
22
22
  "build": "npm run tsc-build",
23
23
  "test": "echo 'no tests'"
24
+ },
25
+ "dependencies": {
26
+ "@tursodatabase/database-common": "^0.2.0-pre.11"
24
27
  }
25
28
  }