@lunora/replica 0.0.0 → 1.0.0-alpha.2
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/LICENSE.md +231 -0
- package/README.md +192 -29
- package/dist/adapters/better-sqlite3.d.mts +27 -0
- package/dist/adapters/better-sqlite3.d.ts +27 -0
- package/dist/adapters/better-sqlite3.mjs +29 -0
- package/dist/adapters/sqlite-wasm.d.mts +25 -0
- package/dist/adapters/sqlite-wasm.d.ts +25 -0
- package/dist/adapters/sqlite-wasm.mjs +56 -0
- package/dist/adapters/sqljs.d.mts +19 -0
- package/dist/adapters/sqljs.d.ts +19 -0
- package/dist/adapters/sqljs.mjs +55 -0
- package/dist/index.d.mts +865 -0
- package/dist/index.d.ts +865 -0
- package/dist/index.mjs +20 -0
- package/dist/packem_shared/EventEmitter-CMZfct03.mjs +92 -0
- package/dist/packem_shared/EventLog-zMy7AYP4.mjs +162 -0
- package/dist/packem_shared/EventLogDO-CZYUvvSr.mjs +235 -0
- package/dist/packem_shared/EventLogDOClient-DGiEdi96.mjs +86 -0
- package/dist/packem_shared/EventSource-DfV4VoRD.mjs +195 -0
- package/dist/packem_shared/EventsSync-DkVbU0WV.mjs +91 -0
- package/dist/packem_shared/InMemorySnapshotStore-BHVAD-Bp.mjs +24 -0
- package/dist/packem_shared/LocalMirror-GeJ26eNe.mjs +188 -0
- package/dist/packem_shared/MaterializerRuntime-HqNXqJxp.mjs +204 -0
- package/dist/packem_shared/SubscriptionManager-C5xbw0pg.mjs +75 -0
- package/dist/packem_shared/applyDiff-BtbIl1D3.mjs +40 -0
- package/dist/packem_shared/applyDiffToDb-DQ1xZp5J.mjs +58 -0
- package/dist/packem_shared/classifyChanges-aZmkxgVI.mjs +38 -0
- package/dist/packem_shared/defineEvents-DiBkPTh_.mjs +28 -0
- package/dist/packem_shared/eventsContext-Bk_p48hj.mjs +6 -0
- package/dist/packem_shared/isClientSeq-C46BkzqJ.mjs +5 -0
- package/dist/packem_shared/local-mirror.d-Bp19ueGy.d.mts +412 -0
- package/dist/packem_shared/local-mirror.d-GhuZAKgm.d.ts +412 -0
- package/dist/packem_shared/subscribeToMirror-CiaM-nQ7.mjs +45 -0
- package/dist/packem_shared/types.d-VfJ76cK4.d.mts +23 -0
- package/dist/packem_shared/types.d-VfJ76cK4.d.ts +23 -0
- package/dist/react.d.mts +65 -0
- package/dist/react.d.ts +65 -0
- package/dist/react.mjs +15 -0
- package/package.json +88 -7
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { S as SqliteAdapter } from "../packem_shared/types.d-VfJ76cK4.js";
|
|
2
|
+
/**
|
|
3
|
+
* Create a {@link SqliteAdapter} backed by [sql.js](https://sql.js.org)
|
|
4
|
+
* (a WebAssembly build of SQLite that runs in browsers, Node, and
|
|
5
|
+
* React Native).
|
|
6
|
+
* @param database An already-initialised sql.js database instance.
|
|
7
|
+
* @param database.run Execute a parameterised SQL statement (no results).
|
|
8
|
+
* @param database.exec Execute SQL and return result rows.
|
|
9
|
+
* @param database.close Tear down the database connection.
|
|
10
|
+
*/
|
|
11
|
+
declare const createSqlJsAdapter: (database: {
|
|
12
|
+
close: () => void;
|
|
13
|
+
exec: (sql: string, params?: unknown[]) => {
|
|
14
|
+
columns: string[];
|
|
15
|
+
values: unknown[][];
|
|
16
|
+
}[];
|
|
17
|
+
run: (sql: string, params?: unknown[]) => void;
|
|
18
|
+
}) => SqliteAdapter;
|
|
19
|
+
export { createSqlJsAdapter };
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
const createSqlJsAdapter = (database) => {
|
|
2
|
+
return {
|
|
3
|
+
exec(sql, params) {
|
|
4
|
+
if (params && params.length > 0) {
|
|
5
|
+
database.run(sql, [...params]);
|
|
6
|
+
} else {
|
|
7
|
+
database.exec(sql);
|
|
8
|
+
}
|
|
9
|
+
},
|
|
10
|
+
query(sql, params) {
|
|
11
|
+
const result = params && params.length > 0 ? database.exec(sql, [...params]) : database.exec(sql);
|
|
12
|
+
const first = result[0];
|
|
13
|
+
if (!first) {
|
|
14
|
+
return [];
|
|
15
|
+
}
|
|
16
|
+
const colNames = first.columns;
|
|
17
|
+
const rows = [];
|
|
18
|
+
for (const row of first.values) {
|
|
19
|
+
const object = {};
|
|
20
|
+
for (const [i, column] of colNames.entries()) {
|
|
21
|
+
object[column] = row[i];
|
|
22
|
+
}
|
|
23
|
+
rows.push(object);
|
|
24
|
+
}
|
|
25
|
+
return rows;
|
|
26
|
+
},
|
|
27
|
+
transaction(function_) {
|
|
28
|
+
database.run("BEGIN");
|
|
29
|
+
try {
|
|
30
|
+
function_();
|
|
31
|
+
database.run("COMMIT");
|
|
32
|
+
} catch (error) {
|
|
33
|
+
database.run("ROLLBACK");
|
|
34
|
+
throw error;
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
lastInsertRowId() {
|
|
38
|
+
const result = database.exec("SELECT last_insert_rowid() AS id");
|
|
39
|
+
const firstRow = result[0];
|
|
40
|
+
if (result.length === 0 || !firstRow || firstRow.values.length === 0) {
|
|
41
|
+
return -1;
|
|
42
|
+
}
|
|
43
|
+
const value = firstRow.values[0];
|
|
44
|
+
if (!value || value.length === 0) {
|
|
45
|
+
return -1;
|
|
46
|
+
}
|
|
47
|
+
return Number(value[0]);
|
|
48
|
+
},
|
|
49
|
+
close() {
|
|
50
|
+
database.close();
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
export { createSqlJsAdapter };
|