cojson-storage-sqlite 0.9.11 → 0.9.12
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/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +9 -0
- package/dist/sqliteClient.js +2 -3
- package/dist/sqliteClient.js.map +1 -1
- package/dist/sqliteNode.js +11 -4
- package/dist/sqliteNode.js.map +1 -1
- package/package.json +3 -3
- package/src/sqliteClient.ts +3 -8
- package/src/sqliteNode.ts +29 -14
package/.turbo/turbo-build.log
CHANGED
package/CHANGELOG.md
CHANGED
package/dist/sqliteClient.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { logger, } from "cojson";
|
|
2
1
|
export class SQLiteClient {
|
|
3
2
|
constructor(db, toLocalNode) {
|
|
4
3
|
this.db = db;
|
|
@@ -19,7 +18,7 @@ export class SQLiteClient {
|
|
|
19
18
|
};
|
|
20
19
|
}
|
|
21
20
|
catch (e) {
|
|
22
|
-
|
|
21
|
+
console.warn(coValueId, "Invalid JSON in header", e, coValueRow?.header);
|
|
23
22
|
return;
|
|
24
23
|
}
|
|
25
24
|
}
|
|
@@ -39,7 +38,7 @@ export class SQLiteClient {
|
|
|
39
38
|
}));
|
|
40
39
|
}
|
|
41
40
|
catch (e) {
|
|
42
|
-
|
|
41
|
+
console.warn("Invalid JSON in transaction", e);
|
|
43
42
|
return [];
|
|
44
43
|
}
|
|
45
44
|
}
|
package/dist/sqliteClient.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqliteClient.js","sourceRoot":"","sources":["../src/sqliteClient.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sqliteClient.js","sourceRoot":"","sources":["../src/sqliteClient.ts"],"names":[],"mappings":"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"}
|
package/dist/sqliteNode.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import Database from "better-sqlite3";
|
|
2
|
-
import { cojsonInternals,
|
|
2
|
+
import { cojsonInternals, } from "cojson";
|
|
3
3
|
import { SyncManager } from "cojson-storage";
|
|
4
4
|
import { SQLiteClient } from "./sqliteClient.js";
|
|
5
5
|
export class SQLiteNode {
|
|
@@ -24,13 +24,13 @@ export class SQLiteNode {
|
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
26
|
catch (e) {
|
|
27
|
-
|
|
27
|
+
console.error(new Error(`Error reading from localNode, handling msg\n\n${JSON.stringify(msg, (k, v) => k === "changes" || k === "encryptedChanges"
|
|
28
28
|
? v.slice(0, 20) + "..."
|
|
29
|
-
: v)}`, e);
|
|
29
|
+
: v)}`, { cause: e }));
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
|
-
processMessages().catch((e) => logger.error("Error in processMessages in sqlite", e));
|
|
33
32
|
};
|
|
33
|
+
processMessages().catch((e) => console.error("Error in processMessages in sqlite", e));
|
|
34
34
|
}
|
|
35
35
|
static async asPeer({ filename, trace, localNodeName = "local", }) {
|
|
36
36
|
const [localNodeAsPeer, storageAsPeer] = cojsonInternals.connectedPeers(localNodeName, "storage", { peer1role: "client", peer2role: "storage", trace, crashOnClose: true });
|
|
@@ -41,7 +41,9 @@ export class SQLiteNode {
|
|
|
41
41
|
const db = Database(filename);
|
|
42
42
|
db.pragma("journal_mode = WAL");
|
|
43
43
|
const oldVersion = db.pragma("user_version")[0].user_version;
|
|
44
|
+
console.log("DB version", oldVersion);
|
|
44
45
|
if (oldVersion === 0) {
|
|
46
|
+
console.log("Migration 0 -> 1: Basic schema");
|
|
45
47
|
db.prepare(`CREATE TABLE IF NOT EXISTS transactions (
|
|
46
48
|
ses INTEGER,
|
|
47
49
|
idx INTEGER,
|
|
@@ -64,9 +66,11 @@ export class SQLiteNode {
|
|
|
64
66
|
);`).run();
|
|
65
67
|
db.prepare(`CREATE INDEX IF NOT EXISTS coValuesByID ON coValues (id);`).run();
|
|
66
68
|
db.pragma("user_version = 1");
|
|
69
|
+
console.log("Migration 0 -> 1: Basic schema - done");
|
|
67
70
|
}
|
|
68
71
|
if (oldVersion <= 1) {
|
|
69
72
|
// fix embarrassing off-by-one error for transaction indices
|
|
73
|
+
console.log("Migration 1 -> 2: Fix off-by-one error for transaction indices");
|
|
70
74
|
const txs = db
|
|
71
75
|
.prepare(`SELECT * FROM transactions`)
|
|
72
76
|
.all();
|
|
@@ -76,8 +80,10 @@ export class SQLiteNode {
|
|
|
76
80
|
db.prepare(`INSERT INTO transactions (ses, idx, tx) VALUES (?, ?, ?)`).run(tx.ses, tx.idx, tx.tx);
|
|
77
81
|
}
|
|
78
82
|
db.pragma("user_version = 2");
|
|
83
|
+
console.log("Migration 1 -> 2: Fix off-by-one error for transaction indices - done");
|
|
79
84
|
}
|
|
80
85
|
if (oldVersion <= 2) {
|
|
86
|
+
console.log("Migration 2 -> 3: Add signatureAfter");
|
|
81
87
|
db.prepare(`CREATE TABLE IF NOT EXISTS signatureAfter (
|
|
82
88
|
ses INTEGER,
|
|
83
89
|
idx INTEGER,
|
|
@@ -86,6 +92,7 @@ export class SQLiteNode {
|
|
|
86
92
|
) WITHOUT ROWID;`).run();
|
|
87
93
|
db.prepare(`ALTER TABLE sessions ADD COLUMN bytesSinceLastSignature INTEGER;`).run();
|
|
88
94
|
db.pragma("user_version = 3");
|
|
95
|
+
console.log("Migration 2 -> 3: Add signatureAfter - done!!");
|
|
89
96
|
}
|
|
90
97
|
return new SQLiteNode(db, fromLocalNode, toLocalNode);
|
|
91
98
|
}
|
package/dist/sqliteNode.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqliteNode.js","sourceRoot":"","sources":["../src/sqliteNode.ts"],"names":[],"mappings":"AAAA,OAAO,QAAmC,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAIL,eAAe,
|
|
1
|
+
{"version":3,"file":"sqliteNode.js","sourceRoot":"","sources":["../src/sqliteNode.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cojson-storage-sqlite",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.9.
|
|
4
|
+
"version": "0.9.12",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "src/index.ts",
|
|
7
7
|
"license": "MIT",
|
|
8
8
|
"dependencies": {
|
|
9
9
|
"better-sqlite3": "^11.7.0",
|
|
10
|
-
"cojson": "0.9.
|
|
11
|
-
"cojson-storage": "0.9.
|
|
10
|
+
"cojson": "0.9.12",
|
|
11
|
+
"cojson-storage": "0.9.12"
|
|
12
12
|
},
|
|
13
13
|
"devDependencies": {
|
|
14
14
|
"@types/better-sqlite3": "^7.6.12",
|
package/src/sqliteClient.ts
CHANGED
|
@@ -1,10 +1,5 @@
|
|
|
1
1
|
import { Database as DatabaseT } from "better-sqlite3";
|
|
2
|
-
import {
|
|
3
|
-
CojsonInternalTypes,
|
|
4
|
-
OutgoingSyncQueue,
|
|
5
|
-
SessionID,
|
|
6
|
-
logger,
|
|
7
|
-
} from "cojson";
|
|
2
|
+
import { CojsonInternalTypes, OutgoingSyncQueue, SessionID } from "cojson";
|
|
8
3
|
import RawCoID = CojsonInternalTypes.RawCoID;
|
|
9
4
|
import Signature = CojsonInternalTypes.Signature;
|
|
10
5
|
import Transaction = CojsonInternalTypes.Transaction;
|
|
@@ -53,7 +48,7 @@ export class SQLiteClient implements DBClientInterface {
|
|
|
53
48
|
header: parsedHeader,
|
|
54
49
|
};
|
|
55
50
|
} catch (e) {
|
|
56
|
-
|
|
51
|
+
console.warn(coValueId, "Invalid JSON in header", e, coValueRow?.header);
|
|
57
52
|
return;
|
|
58
53
|
}
|
|
59
54
|
}
|
|
@@ -80,7 +75,7 @@ export class SQLiteClient implements DBClientInterface {
|
|
|
80
75
|
tx: JSON.parse(transactionRow.tx) as Transaction,
|
|
81
76
|
}));
|
|
82
77
|
} catch (e) {
|
|
83
|
-
|
|
78
|
+
console.warn("Invalid JSON in transaction", e);
|
|
84
79
|
return [];
|
|
85
80
|
}
|
|
86
81
|
}
|
package/src/sqliteNode.ts
CHANGED
|
@@ -4,7 +4,6 @@ import {
|
|
|
4
4
|
OutgoingSyncQueue,
|
|
5
5
|
Peer,
|
|
6
6
|
cojsonInternals,
|
|
7
|
-
logger,
|
|
8
7
|
} from "cojson";
|
|
9
8
|
import { SyncManager, TransactionRow } from "cojson-storage";
|
|
10
9
|
import { SQLiteClient } from "./sqliteClient.js";
|
|
@@ -41,23 +40,25 @@ export class SQLiteNode {
|
|
|
41
40
|
await new Promise((resolve) => setTimeout(resolve, 0));
|
|
42
41
|
}
|
|
43
42
|
} catch (e) {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
msg
|
|
47
|
-
|
|
48
|
-
k
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
43
|
+
console.error(
|
|
44
|
+
new Error(
|
|
45
|
+
`Error reading from localNode, handling msg\n\n${JSON.stringify(
|
|
46
|
+
msg,
|
|
47
|
+
(k, v) =>
|
|
48
|
+
k === "changes" || k === "encryptedChanges"
|
|
49
|
+
? v.slice(0, 20) + "..."
|
|
50
|
+
: v,
|
|
51
|
+
)}`,
|
|
52
|
+
{ cause: e },
|
|
53
|
+
),
|
|
53
54
|
);
|
|
54
55
|
}
|
|
55
56
|
}
|
|
56
|
-
|
|
57
|
-
processMessages().catch((e) =>
|
|
58
|
-
logger.error("Error in processMessages in sqlite", e),
|
|
59
|
-
);
|
|
60
57
|
};
|
|
58
|
+
|
|
59
|
+
processMessages().catch((e) =>
|
|
60
|
+
console.error("Error in processMessages in sqlite", e),
|
|
61
|
+
);
|
|
61
62
|
}
|
|
62
63
|
|
|
63
64
|
static async asPeer({
|
|
@@ -96,7 +97,10 @@ export class SQLiteNode {
|
|
|
96
97
|
db.pragma("user_version") as [{ user_version: number }]
|
|
97
98
|
)[0].user_version as number;
|
|
98
99
|
|
|
100
|
+
console.log("DB version", oldVersion);
|
|
101
|
+
|
|
99
102
|
if (oldVersion === 0) {
|
|
103
|
+
console.log("Migration 0 -> 1: Basic schema");
|
|
100
104
|
db.prepare(
|
|
101
105
|
`CREATE TABLE IF NOT EXISTS transactions (
|
|
102
106
|
ses INTEGER,
|
|
@@ -134,10 +138,15 @@ export class SQLiteNode {
|
|
|
134
138
|
).run();
|
|
135
139
|
|
|
136
140
|
db.pragma("user_version = 1");
|
|
141
|
+
console.log("Migration 0 -> 1: Basic schema - done");
|
|
137
142
|
}
|
|
138
143
|
|
|
139
144
|
if (oldVersion <= 1) {
|
|
140
145
|
// fix embarrassing off-by-one error for transaction indices
|
|
146
|
+
console.log(
|
|
147
|
+
"Migration 1 -> 2: Fix off-by-one error for transaction indices",
|
|
148
|
+
);
|
|
149
|
+
|
|
141
150
|
const txs = db
|
|
142
151
|
.prepare(`SELECT * FROM transactions`)
|
|
143
152
|
.all() as TransactionRow[];
|
|
@@ -154,9 +163,14 @@ export class SQLiteNode {
|
|
|
154
163
|
}
|
|
155
164
|
|
|
156
165
|
db.pragma("user_version = 2");
|
|
166
|
+
console.log(
|
|
167
|
+
"Migration 1 -> 2: Fix off-by-one error for transaction indices - done",
|
|
168
|
+
);
|
|
157
169
|
}
|
|
158
170
|
|
|
159
171
|
if (oldVersion <= 2) {
|
|
172
|
+
console.log("Migration 2 -> 3: Add signatureAfter");
|
|
173
|
+
|
|
160
174
|
db.prepare(
|
|
161
175
|
`CREATE TABLE IF NOT EXISTS signatureAfter (
|
|
162
176
|
ses INTEGER,
|
|
@@ -171,6 +185,7 @@ export class SQLiteNode {
|
|
|
171
185
|
).run();
|
|
172
186
|
|
|
173
187
|
db.pragma("user_version = 3");
|
|
188
|
+
console.log("Migration 2 -> 3: Add signatureAfter - done!!");
|
|
174
189
|
}
|
|
175
190
|
|
|
176
191
|
return new SQLiteNode(db, fromLocalNode, toLocalNode);
|