@tursodatabase/sync-common 0.2.0-pre.1 → 0.2.0-pre.4
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.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/run.d.ts +12 -0
- package/dist/run.d.ts.map +1 -1
- package/dist/run.js +69 -0
- package/dist/types.d.ts +13 -6
- package/dist/types.d.ts.map +1 -1
- package/package.json +4 -1
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 { SyncOpts, ProtocolIo, RunOpts, DatabaseRowMutation, DatabaseRowStatement, DatabaseRowTransformResult, SyncEngineStats } from "./types.js";
|
|
3
|
+
export { run, memoryIO, SyncEngineGuards };
|
|
4
|
+
export type { SyncOpts, ProtocolIo, RunOpts, DatabaseRowMutation, DatabaseRowStatement, DatabaseRowTransformResult, SyncEngineStats };
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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;
|
|
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,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAElJ,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAA;AAC1C,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,eAAe,EAAE,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;
|
|
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;AA2F3D,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,CAwBlG;AAID,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,4 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
import { AsyncLock } from "@tursodatabase/database-common";
|
|
2
3
|
const GENERATOR_RESUME_IO = 0;
|
|
3
4
|
const GENERATOR_RESUME_DONE = 1;
|
|
4
5
|
function trackPromise(p) {
|
|
@@ -110,6 +111,10 @@ export async function run(opts, io, engine, generator) {
|
|
|
110
111
|
if (type == 'SyncEngineStats') {
|
|
111
112
|
return rest;
|
|
112
113
|
}
|
|
114
|
+
if (type == 'SyncEngineChanges') {
|
|
115
|
+
//@ts-ignore
|
|
116
|
+
return rest.changes;
|
|
117
|
+
}
|
|
113
118
|
for (let request = engine.protocolIo(); request != null; request = engine.protocolIo()) {
|
|
114
119
|
tasks.push(trackPromise(process(opts, io, request)));
|
|
115
120
|
}
|
|
@@ -119,3 +124,67 @@ export async function run(opts, io, engine, generator) {
|
|
|
119
124
|
}
|
|
120
125
|
return generator.take();
|
|
121
126
|
}
|
|
127
|
+
export class SyncEngineGuards {
|
|
128
|
+
waitLock;
|
|
129
|
+
pushLock;
|
|
130
|
+
pullLock;
|
|
131
|
+
checkpointLock;
|
|
132
|
+
constructor() {
|
|
133
|
+
this.waitLock = new AsyncLock();
|
|
134
|
+
this.pushLock = new AsyncLock();
|
|
135
|
+
this.pullLock = new AsyncLock();
|
|
136
|
+
this.checkpointLock = new AsyncLock();
|
|
137
|
+
}
|
|
138
|
+
async wait(f) {
|
|
139
|
+
try {
|
|
140
|
+
await this.waitLock.acquire();
|
|
141
|
+
return await f();
|
|
142
|
+
}
|
|
143
|
+
finally {
|
|
144
|
+
this.waitLock.release();
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
async push(f) {
|
|
148
|
+
try {
|
|
149
|
+
await this.pushLock.acquire();
|
|
150
|
+
await this.pullLock.acquire();
|
|
151
|
+
await this.checkpointLock.acquire();
|
|
152
|
+
return await f();
|
|
153
|
+
}
|
|
154
|
+
finally {
|
|
155
|
+
this.pushLock.release();
|
|
156
|
+
this.pullLock.release();
|
|
157
|
+
this.checkpointLock.release();
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
async apply(f) {
|
|
161
|
+
try {
|
|
162
|
+
await this.waitLock.acquire();
|
|
163
|
+
await this.pushLock.acquire();
|
|
164
|
+
await this.pullLock.acquire();
|
|
165
|
+
await this.checkpointLock.acquire();
|
|
166
|
+
return await f();
|
|
167
|
+
}
|
|
168
|
+
finally {
|
|
169
|
+
this.waitLock.release();
|
|
170
|
+
this.pushLock.release();
|
|
171
|
+
this.pullLock.release();
|
|
172
|
+
this.checkpointLock.release();
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
async checkpoint(f) {
|
|
176
|
+
try {
|
|
177
|
+
await this.waitLock.acquire();
|
|
178
|
+
await this.pushLock.acquire();
|
|
179
|
+
await this.pullLock.acquire();
|
|
180
|
+
await this.checkpointLock.acquire();
|
|
181
|
+
return await f();
|
|
182
|
+
}
|
|
183
|
+
finally {
|
|
184
|
+
this.waitLock.release();
|
|
185
|
+
this.pushLock.release();
|
|
186
|
+
this.pullLock.release();
|
|
187
|
+
this.checkpointLock.release();
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
package/dist/types.d.ts
CHANGED
|
@@ -39,22 +39,29 @@ export interface SyncOpts {
|
|
|
39
39
|
encryptionKey?: string;
|
|
40
40
|
tablesIgnore?: string[];
|
|
41
41
|
transform?: Transform;
|
|
42
|
+
longPollTimeoutMs?: number;
|
|
42
43
|
tracing?: string;
|
|
43
44
|
}
|
|
44
45
|
export interface DatabaseRowStatement {
|
|
45
46
|
sql: string;
|
|
46
47
|
values: Array<any>;
|
|
47
48
|
}
|
|
48
|
-
export
|
|
49
|
-
type: 'IO';
|
|
50
|
-
} | {
|
|
51
|
-
type: 'Done';
|
|
52
|
-
} | {
|
|
53
|
-
type: 'SyncEngineStats';
|
|
49
|
+
export interface SyncEngineStats {
|
|
54
50
|
operations: number;
|
|
55
51
|
mainWal: number;
|
|
56
52
|
revertWal: number;
|
|
57
53
|
lastPullUnixTime: number;
|
|
58
54
|
lastPushUnixTime: number | null;
|
|
55
|
+
revision: string | null;
|
|
56
|
+
}
|
|
57
|
+
export type GeneratorResponse = {
|
|
58
|
+
type: 'IO';
|
|
59
|
+
} | {
|
|
60
|
+
type: 'Done';
|
|
61
|
+
} | ({
|
|
62
|
+
type: 'SyncEngineStats';
|
|
63
|
+
} & SyncEngineStats) | {
|
|
64
|
+
type: 'SyncEngineChanges';
|
|
65
|
+
changes: any;
|
|
59
66
|
};
|
|
60
67
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -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,
|
|
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,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,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,WAAW,eAAe;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,MAAM,iBAAiB,GAAG;IAAE,IAAI,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,CAAC;IAAE,IAAI,EAAE,iBAAiB,CAAA;CAAE,GAAG,eAAe,CAAC,GAAG;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,OAAO,EAAE,GAAG,CAAA;CAAE,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tursodatabase/sync-common",
|
|
3
|
-
"version": "0.2.0-pre.
|
|
3
|
+
"version": "0.2.0-pre.4",
|
|
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.4"
|
|
24
27
|
}
|
|
25
28
|
}
|