firebird-wasm 0.1.1 → 0.2.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/CHANGELOG.md +35 -0
- package/dist/.tsbuildinfo.build +1 -1
- package/dist/browser/firebird-browser.d.ts +54 -2
- package/dist/browser/firebird-browser.d.ts.map +1 -1
- package/dist/browser/firebird-browser.js +102 -17
- package/dist/browser/firebird-browser.js.map +1 -1
- package/dist/browser/index.d.ts +4 -0
- package/dist/browser/index.d.ts.map +1 -1
- package/dist/browser/index.js +5 -1
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/leader-election.d.ts +55 -0
- package/dist/browser/leader-election.d.ts.map +1 -0
- package/dist/browser/leader-election.js +64 -0
- package/dist/browser/leader-election.js.map +1 -0
- package/dist/browser/shared-transport.d.ts +128 -0
- package/dist/browser/shared-transport.d.ts.map +1 -0
- package/dist/browser/shared-transport.js +339 -0
- package/dist/browser/shared-transport.js.map +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firebird-browser.js","sourceRoot":"","sources":["../../src/browser/firebird-browser.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"firebird-browser.js","sourceRoot":"","sources":["../../src/browser/firebird-browser.ts"],"names":[],"mappings":"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"}
|
package/dist/browser/index.d.ts
CHANGED
|
@@ -19,6 +19,10 @@ export { splitStatements } from './sql-script';
|
|
|
19
19
|
export type { ScriptStatement } from './sql-script';
|
|
20
20
|
export { DirectTransport } from './engine-transport';
|
|
21
21
|
export type { EngineTransport, EngineHandle, DirectTransportOptions, } from './engine-transport';
|
|
22
|
+
export { SharedEngineTransport } from './shared-transport';
|
|
23
|
+
export type { SharedEngineTransportOptions } from './shared-transport';
|
|
24
|
+
export { electLeader } from './leader-election';
|
|
25
|
+
export type { LeaderElection, LeaderElectionOptions } from './leader-election';
|
|
22
26
|
export { WorkerTransport } from './worker-transport';
|
|
23
27
|
export type { WorkerTransportOptions } from './worker-transport';
|
|
24
28
|
export { serveEngine } from './worker-entry';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,eAAe,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AACjF,YAAY,EAAE,sBAAsB,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAE7E,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEnE,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAEnE,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,YAAY,EACV,eAAe,EACf,YAAY,EACZ,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,YAAY,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAEjE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,YAAY,EACV,QAAQ,EACR,aAAa,EACb,cAAc,GACf,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,YAAY,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAExE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC/D,YAAY,EACV,kBAAkB,EAClB,eAAe,EACf,YAAY,EACZ,QAAQ,GACT,MAAM,gBAAgB,CAAC;AAGxB,YAAY,EACV,WAAW,EACX,WAAW,EACX,GAAG,EACH,SAAS,EACT,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,GACf,MAAM,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,eAAe,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AACjF,YAAY,EAAE,sBAAsB,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAE7E,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEnE,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAEnE,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,YAAY,EACV,eAAe,EACf,YAAY,EACZ,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,YAAY,EAAE,4BAA4B,EAAE,MAAM,oBAAoB,CAAC;AAEvE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE/E,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,YAAY,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAEjE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,YAAY,EACV,QAAQ,EACR,aAAa,EACb,cAAc,GACf,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,YAAY,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAExE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC/D,YAAY,EACV,kBAAkB,EAClB,eAAe,EACf,YAAY,EACZ,QAAQ,GACT,MAAM,gBAAgB,CAAC;AAGxB,YAAY,EACV,WAAW,EACX,WAAW,EACX,GAAG,EACH,SAAS,EACT,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,GACf,MAAM,UAAU,CAAC"}
|
package/dist/browser/index.js
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* ```
|
|
11
11
|
*/
|
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
-
exports.allocString = exports.loadFirebirdWasm = exports.IndexedDBVFS = exports.serveEngine = exports.WorkerTransport = exports.DirectTransport = exports.splitStatements = exports.DatabaseLockedError = exports.databaseLockName = exports.acquireDatabaseLock = exports.hasTransactionOptions = exports.isolationCode = exports.firebirdTypeName = exports.encodeParamValue = exports.encodeParams = exports.FirebirdBrowserTransaction = exports.FirebirdBrowser = void 0;
|
|
13
|
+
exports.allocString = exports.loadFirebirdWasm = exports.IndexedDBVFS = exports.serveEngine = exports.WorkerTransport = exports.electLeader = exports.SharedEngineTransport = exports.DirectTransport = exports.splitStatements = exports.DatabaseLockedError = exports.databaseLockName = exports.acquireDatabaseLock = exports.hasTransactionOptions = exports.isolationCode = exports.firebirdTypeName = exports.encodeParamValue = exports.encodeParams = exports.FirebirdBrowserTransaction = exports.FirebirdBrowser = void 0;
|
|
14
14
|
var firebird_browser_1 = require("./firebird-browser");
|
|
15
15
|
Object.defineProperty(exports, "FirebirdBrowser", { enumerable: true, get: function () { return firebird_browser_1.FirebirdBrowser; } });
|
|
16
16
|
Object.defineProperty(exports, "FirebirdBrowserTransaction", { enumerable: true, get: function () { return firebird_browser_1.FirebirdBrowserTransaction; } });
|
|
@@ -30,6 +30,10 @@ var sql_script_1 = require("./sql-script");
|
|
|
30
30
|
Object.defineProperty(exports, "splitStatements", { enumerable: true, get: function () { return sql_script_1.splitStatements; } });
|
|
31
31
|
var engine_transport_1 = require("./engine-transport");
|
|
32
32
|
Object.defineProperty(exports, "DirectTransport", { enumerable: true, get: function () { return engine_transport_1.DirectTransport; } });
|
|
33
|
+
var shared_transport_1 = require("./shared-transport");
|
|
34
|
+
Object.defineProperty(exports, "SharedEngineTransport", { enumerable: true, get: function () { return shared_transport_1.SharedEngineTransport; } });
|
|
35
|
+
var leader_election_1 = require("./leader-election");
|
|
36
|
+
Object.defineProperty(exports, "electLeader", { enumerable: true, get: function () { return leader_election_1.electLeader; } });
|
|
33
37
|
var worker_transport_1 = require("./worker-transport");
|
|
34
38
|
Object.defineProperty(exports, "WorkerTransport", { enumerable: true, get: function () { return worker_transport_1.WorkerTransport; } });
|
|
35
39
|
var worker_entry_1 = require("./worker-entry");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;AAEH,uDAAiF;AAAxE,mHAAA,eAAe,OAAA;AAAE,8HAAA,0BAA0B,OAAA;AAGpD,mCAA0D;AAAjD,sGAAA,YAAY,OAAA;AAAE,0GAAA,gBAAgB,OAAA;AAEvC,6CAAiD;AAAxC,+GAAA,gBAAgB,OAAA;AAEzB,yCAAmE;AAA1D,0GAAA,aAAa,OAAA;AAAE,kHAAA,qBAAqB,OAAA;AAE7C,qCAImB;AAHjB,8GAAA,mBAAmB,OAAA;AACnB,2GAAA,gBAAgB,OAAA;AAChB,8GAAA,mBAAmB,OAAA;AAIrB,2CAA+C;AAAtC,6GAAA,eAAe,OAAA;AAGxB,uDAAqD;AAA5C,mHAAA,eAAe,OAAA;AAOxB,uDAAqD;AAA5C,mHAAA,eAAe,OAAA;AAGxB,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AAQpB,iDAA+C;AAAtC,6GAAA,YAAY,OAAA;AAGrB,8CAA+D;AAAtD,+GAAA,gBAAgB,OAAA;AAAE,0GAAA,WAAW,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;AAEH,uDAAiF;AAAxE,mHAAA,eAAe,OAAA;AAAE,8HAAA,0BAA0B,OAAA;AAGpD,mCAA0D;AAAjD,sGAAA,YAAY,OAAA;AAAE,0GAAA,gBAAgB,OAAA;AAEvC,6CAAiD;AAAxC,+GAAA,gBAAgB,OAAA;AAEzB,yCAAmE;AAA1D,0GAAA,aAAa,OAAA;AAAE,kHAAA,qBAAqB,OAAA;AAE7C,qCAImB;AAHjB,8GAAA,mBAAmB,OAAA;AACnB,2GAAA,gBAAgB,OAAA;AAChB,8GAAA,mBAAmB,OAAA;AAIrB,2CAA+C;AAAtC,6GAAA,eAAe,OAAA;AAGxB,uDAAqD;AAA5C,mHAAA,eAAe,OAAA;AAOxB,uDAA2D;AAAlD,yHAAA,qBAAqB,OAAA;AAG9B,qDAAgD;AAAvC,8GAAA,WAAW,OAAA;AAGpB,uDAAqD;AAA5C,mHAAA,eAAe,OAAA;AAGxB,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AAQpB,iDAA+C;AAAtC,6GAAA,YAAY,OAAA;AAGrB,8CAA+D;AAAtD,+GAAA,gBAAgB,OAAA;AAAE,0GAAA,WAAW,OAAA"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* leader-election.ts – exactly one tab owns the engine; the rest wait.
|
|
3
|
+
*
|
|
4
|
+
* Built on the same Web Lock that {@link acquireDatabaseLock} already uses for
|
|
5
|
+
* multi-tab *safety*, because election is the same problem viewed from the
|
|
6
|
+
* other side. Refusing the second tab and serving it from the first differ
|
|
7
|
+
* only in what the loser does after losing.
|
|
8
|
+
*
|
|
9
|
+
* Every participant requests the lock and never gives it back voluntarily.
|
|
10
|
+
* Whoever holds it is the leader; everyone else is queued behind it. When the
|
|
11
|
+
* leader's context dies — closed, crashed, killed while backgrounded — the
|
|
12
|
+
* browser releases the lock and the next waiter is granted it and promoted.
|
|
13
|
+
* There is no heartbeat, no lease to expire, and no way to observe two leaders
|
|
14
|
+
* at once, because the browser will not grant an exclusive lock twice.
|
|
15
|
+
*/
|
|
16
|
+
/** A participant in the election for one database. */
|
|
17
|
+
export interface LeaderElection {
|
|
18
|
+
/** Whether this context currently holds the lock. */
|
|
19
|
+
readonly isLeader: boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Resolves the moment this context becomes leader.
|
|
22
|
+
*
|
|
23
|
+
* Already-resolved if it is the leader; otherwise pending until the current
|
|
24
|
+
* leader goes away. Never rejects on losing — losing is the normal case.
|
|
25
|
+
*/
|
|
26
|
+
readonly promoted: Promise<void>;
|
|
27
|
+
/**
|
|
28
|
+
* Whether exclusion is actually enforced.
|
|
29
|
+
*
|
|
30
|
+
* `false` where the Web Locks API is missing, in which case every
|
|
31
|
+
* participant believes it is the leader. See {@link acquireDatabaseLock}.
|
|
32
|
+
*/
|
|
33
|
+
readonly enforced: boolean;
|
|
34
|
+
/** Stop participating, releasing the lock if this context holds it. */
|
|
35
|
+
resign(): Promise<void>;
|
|
36
|
+
}
|
|
37
|
+
/** Options for {@link electLeader}. */
|
|
38
|
+
export interface LeaderElectionOptions {
|
|
39
|
+
/**
|
|
40
|
+
* Called once when this context is promoted.
|
|
41
|
+
*
|
|
42
|
+
* Runs before {@link LeaderElection.promoted} resolves, so a leader can
|
|
43
|
+
* finish standing up its engine before anyone is told it exists.
|
|
44
|
+
*/
|
|
45
|
+
onPromoted?: () => void | Promise<void>;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Join the election for `dbName`.
|
|
49
|
+
*
|
|
50
|
+
* Returns as soon as participation has *started*, not when it is won — a
|
|
51
|
+
* follower must be usable immediately, and the first thing it does is proxy
|
|
52
|
+
* to whoever is already leading.
|
|
53
|
+
*/
|
|
54
|
+
export declare function electLeader(dbName: string, options?: LeaderElectionOptions): LeaderElection;
|
|
55
|
+
//# sourceMappingURL=leader-election.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"leader-election.d.ts","sourceRoot":"","sources":["../../src/browser/leader-election.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,sDAAsD;AACtD,MAAM,WAAW,cAAc;IAC7B,qDAAqD;IACrD,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,uEAAuE;IACvE,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACzB;AAED,uCAAuC;AACvC,MAAM,WAAW,qBAAqB;IACpC;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzC;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,qBAA0B,GAClC,cAAc,CAyChB"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* leader-election.ts – exactly one tab owns the engine; the rest wait.
|
|
4
|
+
*
|
|
5
|
+
* Built on the same Web Lock that {@link acquireDatabaseLock} already uses for
|
|
6
|
+
* multi-tab *safety*, because election is the same problem viewed from the
|
|
7
|
+
* other side. Refusing the second tab and serving it from the first differ
|
|
8
|
+
* only in what the loser does after losing.
|
|
9
|
+
*
|
|
10
|
+
* Every participant requests the lock and never gives it back voluntarily.
|
|
11
|
+
* Whoever holds it is the leader; everyone else is queued behind it. When the
|
|
12
|
+
* leader's context dies — closed, crashed, killed while backgrounded — the
|
|
13
|
+
* browser releases the lock and the next waiter is granted it and promoted.
|
|
14
|
+
* There is no heartbeat, no lease to expire, and no way to observe two leaders
|
|
15
|
+
* at once, because the browser will not grant an exclusive lock twice.
|
|
16
|
+
*/
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.electLeader = electLeader;
|
|
19
|
+
const db_lock_1 = require("./db-lock");
|
|
20
|
+
/**
|
|
21
|
+
* Join the election for `dbName`.
|
|
22
|
+
*
|
|
23
|
+
* Returns as soon as participation has *started*, not when it is won — a
|
|
24
|
+
* follower must be usable immediately, and the first thing it does is proxy
|
|
25
|
+
* to whoever is already leading.
|
|
26
|
+
*/
|
|
27
|
+
function electLeader(dbName, options = {}) {
|
|
28
|
+
let leader = false;
|
|
29
|
+
let enforced = true;
|
|
30
|
+
let lock = null;
|
|
31
|
+
let resigned = false;
|
|
32
|
+
const promoted = (async () => {
|
|
33
|
+
// Infinity, deliberately: a follower is not waiting on a timeout, it is
|
|
34
|
+
// waiting for the leader to go away, which may be never.
|
|
35
|
+
const held = await (0, db_lock_1.acquireDatabaseLock)(dbName, { timeoutMs: Infinity });
|
|
36
|
+
if (resigned) {
|
|
37
|
+
// resign() ran while this was queued. Release immediately rather than
|
|
38
|
+
// silently becoming a leader nobody is going to use.
|
|
39
|
+
await held.release();
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
lock = held;
|
|
43
|
+
enforced = held.enforced;
|
|
44
|
+
leader = true;
|
|
45
|
+
await options.onPromoted?.();
|
|
46
|
+
})();
|
|
47
|
+
return {
|
|
48
|
+
get isLeader() {
|
|
49
|
+
return leader;
|
|
50
|
+
},
|
|
51
|
+
get enforced() {
|
|
52
|
+
return enforced;
|
|
53
|
+
},
|
|
54
|
+
promoted,
|
|
55
|
+
resign: async () => {
|
|
56
|
+
resigned = true;
|
|
57
|
+
const held = lock;
|
|
58
|
+
lock = null;
|
|
59
|
+
leader = false;
|
|
60
|
+
await held?.release();
|
|
61
|
+
},
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=leader-election.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"leader-election.js","sourceRoot":"","sources":["../../src/browser/leader-election.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;AA6CH,kCA4CC;AAvFD,uCAAgD;AAoChD;;;;;;GAMG;AACH,SAAgB,WAAW,CACzB,MAAc,EACd,UAAiC,EAAE;IAEnC,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,QAAQ,GAAG,IAAI,CAAC;IACpB,IAAI,IAAI,GAAwB,IAAI,CAAC;IACrC,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,MAAM,QAAQ,GAAG,CAAC,KAAK,IAAI,EAAE;QAC3B,wEAAwE;QACxE,yDAAyD;QACzD,MAAM,IAAI,GAAG,MAAM,IAAA,6BAAmB,EAAC,MAAM,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;QAExE,IAAI,QAAQ,EAAE,CAAC;YACb,uEAAuE;YACvE,qDAAqD;YACrD,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;YACrB,OAAO;QACT,CAAC;QAED,IAAI,GAAG,IAAI,CAAC;QACZ,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QACzB,MAAM,GAAG,IAAI,CAAC;QAEd,MAAM,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;IAC/B,CAAC,CAAC,EAAE,CAAC;IAEL,OAAO;QACL,IAAI,QAAQ;YACV,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,IAAI,QAAQ;YACV,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,QAAQ;QACR,MAAM,EAAE,KAAK,IAAI,EAAE;YACjB,QAAQ,GAAG,IAAI,CAAC;YAChB,MAAM,IAAI,GAAG,IAAI,CAAC;YAClB,IAAI,GAAG,IAAI,CAAC;YACZ,MAAM,GAAG,KAAK,CAAC;YACf,MAAM,IAAI,EAAE,OAAO,EAAE,CAAC;QACxB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* shared-transport.ts – one engine, many tabs.
|
|
3
|
+
*
|
|
4
|
+
* `multiTab: 'exclusive'` keeps a second tab safe by refusing it. This serves
|
|
5
|
+
* it instead: one tab wins the election, runs the engine, and answers for
|
|
6
|
+
* everyone else over a `BroadcastChannel`.
|
|
7
|
+
*
|
|
8
|
+
* ## Why only one tab may run the engine
|
|
9
|
+
*
|
|
10
|
+
* Not because concurrent access needs coordinating — because each tab holds
|
|
11
|
+
* its own complete copy of the database in memory and persists the whole
|
|
12
|
+
* image. Two engines on one database is not a race to be locked around; the
|
|
13
|
+
* later persist discards the other's work entirely. So the engine is
|
|
14
|
+
* singular by construction, and the other tabs are clients of it.
|
|
15
|
+
*
|
|
16
|
+
* ## What happens when the leader disappears
|
|
17
|
+
*
|
|
18
|
+
* The lock releases, a follower is promoted, and it starts its own engine from
|
|
19
|
+
* the last persisted image. Writes made in the departed leader's final
|
|
20
|
+
* debounce window are lost — the same exposure a single tab has always had,
|
|
21
|
+
* and no worse.
|
|
22
|
+
*
|
|
23
|
+
* In-flight calls at that moment are handled by what they are, not uniformly:
|
|
24
|
+
* a read is re-issued to the new leader, because running a query twice is
|
|
25
|
+
* indistinguishable from running it once; a write is **rejected**. The old
|
|
26
|
+
* leader may have committed it and died before the reply, so re-issuing could
|
|
27
|
+
* apply it twice. An error a caller can see beats a duplicate row it cannot.
|
|
28
|
+
*/
|
|
29
|
+
import type { Row, QueryResult, QueryParams, TransactionOptions } from '../types';
|
|
30
|
+
import type { EngineHandle, EngineTransport } from './engine-transport';
|
|
31
|
+
/** Options for {@link SharedEngineTransport}. */
|
|
32
|
+
export interface SharedEngineTransportOptions {
|
|
33
|
+
/** Logical database name; scopes both the lock and the channel. */
|
|
34
|
+
dbName: string;
|
|
35
|
+
/**
|
|
36
|
+
* Builds the engine. Called **only** if this tab becomes leader, so a
|
|
37
|
+
* follower never loads the 9 MB artifact it would not use.
|
|
38
|
+
*/
|
|
39
|
+
createEngine: () => EngineTransport;
|
|
40
|
+
/**
|
|
41
|
+
* How long a follower waits for the leader to answer, in milliseconds.
|
|
42
|
+
*
|
|
43
|
+
* Generous by default because creating a database is slow and the follower
|
|
44
|
+
* cannot tell a slow leader from a dead one.
|
|
45
|
+
*
|
|
46
|
+
* @default 120000
|
|
47
|
+
*/
|
|
48
|
+
timeoutMs?: number;
|
|
49
|
+
/**
|
|
50
|
+
* Called on the leader when it serves an operation that changed data.
|
|
51
|
+
*
|
|
52
|
+
* Persistence lives with whoever owns the engine, and a follower's writes
|
|
53
|
+
* are executed by the leader — so without this the leader would never learn
|
|
54
|
+
* that anything needs saving.
|
|
55
|
+
*/
|
|
56
|
+
onServedMutation?: () => void;
|
|
57
|
+
/**
|
|
58
|
+
* Called when the engine behind this transport has been replaced.
|
|
59
|
+
*
|
|
60
|
+
* Handles are issued by whichever engine is running, so a leadership change
|
|
61
|
+
* voids every one of them — in every tab, not just the promoted one. The
|
|
62
|
+
* owner must re-open the database before using it again, and it must happen
|
|
63
|
+
* on the leader before any follower is told there is a leader to talk to.
|
|
64
|
+
*/
|
|
65
|
+
onEngineReplaced?: () => Promise<void>;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* An {@link EngineTransport} backed by whichever tab currently owns the engine.
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* ```ts
|
|
72
|
+
* const db = new FirebirdBrowser('mydb', {
|
|
73
|
+
* multiTab: 'shared',
|
|
74
|
+
* worker: () => new Worker('/firebird-engine-worker.js'),
|
|
75
|
+
* });
|
|
76
|
+
* ```
|
|
77
|
+
*/
|
|
78
|
+
export declare class SharedEngineTransport implements EngineTransport {
|
|
79
|
+
private readonly dbName;
|
|
80
|
+
private readonly createEngine;
|
|
81
|
+
private readonly timeoutMs;
|
|
82
|
+
private readonly onServedMutation?;
|
|
83
|
+
private readonly onEngineReplaced?;
|
|
84
|
+
private readonly channel;
|
|
85
|
+
private readonly clientId;
|
|
86
|
+
private readonly election;
|
|
87
|
+
/** The real engine. Non-null exactly when this tab is the leader. */
|
|
88
|
+
private engine;
|
|
89
|
+
private readonly pending;
|
|
90
|
+
private nextCallId;
|
|
91
|
+
private disposed;
|
|
92
|
+
/** Highest leadership generation seen; guards against stale announcements. */
|
|
93
|
+
private epoch;
|
|
94
|
+
/** True while this tab is standing its engine up, so calls stay local. */
|
|
95
|
+
private promoting;
|
|
96
|
+
/** Resolves once a leader is known to exist, so calls do not go nowhere. */
|
|
97
|
+
private leaderKnown;
|
|
98
|
+
private announceLeaderKnown;
|
|
99
|
+
constructor(options: SharedEngineTransportOptions);
|
|
100
|
+
/** Whether this tab currently runs the engine. */
|
|
101
|
+
get isLeader(): boolean;
|
|
102
|
+
private assumeLeadership;
|
|
103
|
+
private recoverPending;
|
|
104
|
+
/** Follower side: the leader changed, so re-open against the new one. */
|
|
105
|
+
private reopenAfterLeaderChange;
|
|
106
|
+
private readonly onMessage;
|
|
107
|
+
/** Leader side: run the operation and reply to the caller. */
|
|
108
|
+
private serve;
|
|
109
|
+
private settle;
|
|
110
|
+
private runLocally;
|
|
111
|
+
/** Run `op` here if this tab leads, otherwise ask whoever does. */
|
|
112
|
+
private call;
|
|
113
|
+
init(): Promise<void>;
|
|
114
|
+
createDatabase(path: string): Promise<EngineHandle>;
|
|
115
|
+
attachDatabase(path: string): Promise<EngineHandle>;
|
|
116
|
+
detachDatabase(dbHandle: EngineHandle): Promise<void>;
|
|
117
|
+
execute(dbHandle: EngineHandle, txHandle: EngineHandle, sql: string, params?: QueryParams): Promise<number>;
|
|
118
|
+
query<T extends Row = Row>(dbHandle: EngineHandle, txHandle: EngineHandle, sql: string, params?: QueryParams): Promise<QueryResult<T>>;
|
|
119
|
+
startTransaction(dbHandle: EngineHandle, options?: TransactionOptions): Promise<EngineHandle>;
|
|
120
|
+
commit(txHandle: EngineHandle): Promise<void>;
|
|
121
|
+
rollback(txHandle: EngineHandle): Promise<void>;
|
|
122
|
+
mkdir(path: string): Promise<void>;
|
|
123
|
+
exists(path: string): Promise<boolean>;
|
|
124
|
+
readFile(path: string): Promise<Uint8Array>;
|
|
125
|
+
writeFile(path: string, data: Uint8Array): Promise<void>;
|
|
126
|
+
dispose(): Promise<void>;
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=shared-transport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared-transport.d.ts","sourceRoot":"","sources":["../../src/browser/shared-transport.ts"],"names":[],"mappings":"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"}
|