cojson-storage-sqlite 0.10.8 → 0.11.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.
@@ -1,4 +1,4 @@
1
1
 
2
- > cojson-storage-sqlite@0.10.8 build /home/runner/_work/jazz/jazz/packages/cojson-storage-sqlite
2
+ > cojson-storage-sqlite@0.11.0 build /home/runner/_work/jazz/jazz/packages/cojson-storage-sqlite
3
3
  > rm -rf ./dist && tsc --sourceMap --outDir dist
4
4
 
package/CHANGELOG.md CHANGED
@@ -1,5 +1,26 @@
1
1
  # cojson-storage-sqlite
2
2
 
3
+ ## 0.11.0
4
+
5
+ ### Patch Changes
6
+
7
+ - a4713df: Moving to the d.ts files for the exported type definitions
8
+ - Updated dependencies [b9d194a]
9
+ - Updated dependencies [a4713df]
10
+ - Updated dependencies [e22de9f]
11
+ - Updated dependencies [34cbdc3]
12
+ - Updated dependencies [0f67e0a]
13
+ - cojson@0.11.0
14
+ - cojson-storage@0.11.0
15
+
16
+ ## 0.10.15
17
+
18
+ ### Patch Changes
19
+
20
+ - Updated dependencies [f86e278]
21
+ - cojson@0.10.15
22
+ - cojson-storage@0.10.15
23
+
3
24
  ## 0.10.8
4
25
 
5
26
  ### Patch Changes
@@ -0,0 +1,2 @@
1
+ export { SQLiteNode, SQLiteNode as SQLiteStorage } from "./sqliteNode.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,40 @@
1
+ import type { Database as DatabaseT } from "better-sqlite3";
2
+ import { type CojsonInternalTypes, type OutgoingSyncQueue, type SessionID } from "cojson";
3
+ import type { DBClientInterface, SessionRow, SignatureAfterRow, StoredCoValueRow, StoredSessionRow, TransactionRow } from "cojson-storage";
4
+ type RawCoID = CojsonInternalTypes.RawCoID;
5
+ type Signature = CojsonInternalTypes.Signature;
6
+ type Transaction = CojsonInternalTypes.Transaction;
7
+ export type RawCoValueRow = {
8
+ id: CojsonInternalTypes.RawCoID;
9
+ header: string;
10
+ };
11
+ export type RawTransactionRow = {
12
+ ses: number;
13
+ idx: number;
14
+ tx: string;
15
+ };
16
+ export declare function getErrorMessage(error: unknown): string;
17
+ export declare class SQLiteClient implements DBClientInterface {
18
+ private readonly db;
19
+ private readonly toLocalNode;
20
+ constructor(db: DatabaseT, toLocalNode: OutgoingSyncQueue);
21
+ getCoValue(coValueId: RawCoID): StoredCoValueRow | undefined;
22
+ getCoValueSessions(coValueRowId: number): StoredSessionRow[];
23
+ getSingleCoValueSession(coValueRowId: number, sessionID: SessionID): StoredSessionRow | undefined;
24
+ getNewTransactionInSession(sessionRowId: number, firstNewTxIdx: number): TransactionRow[];
25
+ getSignatures(sessionRowId: number, firstNewTxIdx: number): SignatureAfterRow[];
26
+ addCoValue(msg: CojsonInternalTypes.NewContentMessage): number;
27
+ addSessionUpdate({ sessionUpdate, sessionRow, }: {
28
+ sessionUpdate: SessionRow;
29
+ sessionRow?: StoredSessionRow;
30
+ }): number;
31
+ addTransaction(sessionRowID: number, nextIdx: number, newTransaction: Transaction): void;
32
+ addSignatureAfter({ sessionRowID, idx, signature, }: {
33
+ sessionRowID: number;
34
+ idx: number;
35
+ signature: Signature;
36
+ }): void;
37
+ transaction(operationsCallback: () => unknown): undefined;
38
+ }
39
+ export {};
40
+ //# sourceMappingURL=sqliteClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqliteClient.d.ts","sourceRoot":"","sources":["../src/sqliteClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,IAAI,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,SAAS,EAEf,MAAM,QAAQ,CAAC;AAChB,OAAO,KAAK,EACV,iBAAiB,EACjB,UAAU,EACV,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACf,MAAM,gBAAgB,CAAC;AAExB,KAAK,OAAO,GAAG,mBAAmB,CAAC,OAAO,CAAC;AAC3C,KAAK,SAAS,GAAG,mBAAmB,CAAC,SAAS,CAAC;AAC/C,KAAK,WAAW,GAAG,mBAAmB,CAAC,WAAW,CAAC;AAEnD,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,EAAE,mBAAmB,CAAC,OAAO,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,UAE7C;AAED,qBAAa,YAAa,YAAW,iBAAiB;IACpD,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAY;IAC/B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAoB;gBAEpC,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,iBAAiB;IAKzD,UAAU,CAAC,SAAS,EAAE,OAAO,GAAG,gBAAgB,GAAG,SAAS;IAwB5D,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,gBAAgB,EAAE;IAM5D,uBAAuB,CACrB,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,SAAS,GACnB,gBAAgB,GAAG,SAAS;IAQ/B,0BAA0B,CACxB,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,GACpB,cAAc,EAAE;IAkBnB,aAAa,CACX,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,GACpB,iBAAiB,EAAE;IAQtB,UAAU,CAAC,GAAG,EAAE,mBAAmB,CAAC,iBAAiB,GAAG,MAAM;IAQ9D,gBAAgB,CAAC,EACf,aAAa,EACb,UAAU,GACX,EAAE;QACD,aAAa,EAAE,UAAU,CAAC;QAC1B,UAAU,CAAC,EAAE,gBAAgB,CAAC;KAC/B,GAAG,MAAM;IAkBV,cAAc,CACZ,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,WAAW;IAS7B,iBAAiB,CAAC,EAChB,YAAY,EACZ,GAAG,EACH,SAAS,GACV,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,SAAS,CAAA;KAAE;IAQ9D,WAAW,CAAC,kBAAkB,EAAE,MAAM,OAAO;CAI9C"}
@@ -9,7 +9,7 @@ export class SQLiteClient {
9
9
  }
10
10
  getCoValue(coValueId) {
11
11
  const coValueRow = this.db
12
- .prepare(`SELECT * FROM coValues WHERE id = ?`)
12
+ .prepare("SELECT * FROM coValues WHERE id = ?")
13
13
  .get(coValueId);
14
14
  if (!coValueRow)
15
15
  return;
@@ -23,7 +23,7 @@ export class SQLiteClient {
23
23
  }
24
24
  catch (e) {
25
25
  const headerValue = coValueRow?.header ?? "";
26
- logger.warn("Invalid JSON in header: " + headerValue, {
26
+ logger.warn(`Invalid JSON in header: ${headerValue}`, {
27
27
  id: coValueId,
28
28
  });
29
29
  return;
@@ -31,17 +31,17 @@ export class SQLiteClient {
31
31
  }
32
32
  getCoValueSessions(coValueRowId) {
33
33
  return this.db
34
- .prepare(`SELECT * FROM sessions WHERE coValue = ?`)
34
+ .prepare("SELECT * FROM sessions WHERE coValue = ?")
35
35
  .all(coValueRowId);
36
36
  }
37
37
  getSingleCoValueSession(coValueRowId, sessionID) {
38
38
  return this.db
39
- .prepare(`SELECT * FROM sessions WHERE coValue = ? AND sessionID = ?`)
39
+ .prepare("SELECT * FROM sessions WHERE coValue = ? AND sessionID = ?")
40
40
  .get(coValueRowId, sessionID);
41
41
  }
42
42
  getNewTransactionInSession(sessionRowId, firstNewTxIdx) {
43
43
  const txs = this.db
44
- .prepare(`SELECT * FROM transactions WHERE ses = ? AND idx >= ?`)
44
+ .prepare("SELECT * FROM transactions WHERE ses = ? AND idx >= ?")
45
45
  .all(sessionRowId, firstNewTxIdx);
46
46
  try {
47
47
  return txs.map((transactionRow) => ({
@@ -56,12 +56,12 @@ export class SQLiteClient {
56
56
  }
57
57
  getSignatures(sessionRowId, firstNewTxIdx) {
58
58
  return this.db
59
- .prepare(`SELECT * FROM signatureAfter WHERE ses = ? AND idx >= ?`)
59
+ .prepare("SELECT * FROM signatureAfter WHERE ses = ? AND idx >= ?")
60
60
  .all(sessionRowId, firstNewTxIdx);
61
61
  }
62
62
  addCoValue(msg) {
63
63
  return this.db
64
- .prepare(`INSERT INTO coValues (id, header) VALUES (?, ?)`)
64
+ .prepare("INSERT INTO coValues (id, header) VALUES (?, ?)")
65
65
  .run(msg.id, JSON.stringify(msg.header)).lastInsertRowid;
66
66
  }
67
67
  addSessionUpdate({ sessionUpdate, sessionRow, }) {
@@ -73,16 +73,17 @@ export class SQLiteClient {
73
73
  }
74
74
  addTransaction(sessionRowID, nextIdx, newTransaction) {
75
75
  this.db
76
- .prepare(`INSERT INTO transactions (ses, idx, tx) VALUES (?, ?, ?)`)
76
+ .prepare("INSERT INTO transactions (ses, idx, tx) VALUES (?, ?, ?)")
77
77
  .run(sessionRowID, nextIdx, JSON.stringify(newTransaction));
78
78
  }
79
79
  addSignatureAfter({ sessionRowID, idx, signature, }) {
80
80
  this.db
81
- .prepare(`INSERT INTO signatureAfter (ses, idx, signature) VALUES (?, ?, ?)`)
81
+ .prepare("INSERT INTO signatureAfter (ses, idx, signature) VALUES (?, ?, ?)")
82
82
  .run(sessionRowID, idx, signature);
83
83
  }
84
84
  transaction(operationsCallback) {
85
85
  this.db.transaction(operationsCallback)();
86
+ return undefined;
86
87
  }
87
88
  }
88
89
  //# sourceMappingURL=sqliteClient.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sqliteClient.js","sourceRoot":"","sources":["../src/sqliteClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sqliteClient.js","sourceRoot":"","sources":["../src/sqliteClient.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,MAAM,GACP,MAAM,QAAQ,CAAC;AAyBhB,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;AAClE,CAAC;AAED,MAAM,OAAO,YAAY;IAIvB,YAAY,EAAa,EAAE,WAA8B;QACvD,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAED,UAAU,CAAC,SAAkB;QAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE;aACvB,OAAO,CAAC,qCAAqC,CAAC;aAC9C,GAAG,CAAC,SAAS,CAAsC,CAAC;QAEvD,IAAI,CAAC,UAAU;YAAE,OAAO;QAExB,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,CAAC,UAAU,EAAE,MAAM;gBACtC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAsC,CAAC;YAEtE,OAAO;gBACL,GAAG,UAAU;gBACb,MAAM,EAAE,YAAY;aACrB,CAAC;QACJ,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,WAAW,GAAG,UAAU,EAAE,MAAM,IAAI,EAAE,CAAC;YAC7C,MAAM,CAAC,IAAI,CAAC,2BAA2B,WAAW,EAAE,EAAE;gBACpD,EAAE,EAAE,SAAS;aACd,CAAC,CAAC;YACH,OAAO;QACT,CAAC;IACH,CAAC;IAED,kBAAkB,CAAC,YAAoB;QACrC,OAAO,IAAI,CAAC,EAAE;aACX,OAAO,CAAS,0CAA0C,CAAC;aAC3D,GAAG,CAAC,YAAY,CAAuB,CAAC;IAC7C,CAAC;IAED,uBAAuB,CACrB,YAAoB,EACpB,SAAoB;QAEpB,OAAO,IAAI,CAAC,EAAE;aACX,OAAO,CACN,4DAA4D,CAC7D;aACA,GAAG,CAAC,YAAY,EAAE,SAAS,CAAiC,CAAC;IAClE,CAAC;IAED,0BAA0B,CACxB,YAAoB,EACpB,aAAqB;QAErB,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE;aAChB,OAAO,CACN,uDAAuD,CACxD;aACA,GAAG,CAAC,YAAY,EAAE,aAAa,CAAwB,CAAC;QAE3D,IAAI,CAAC;YACH,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;gBAClC,GAAG,cAAc;gBACjB,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAgB;aACjD,CAAC,CAAC,CAAC;QACN,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;YAC3C,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,aAAa,CACX,YAAoB,EACpB,aAAqB;QAErB,OAAO,IAAI,CAAC,EAAE;aACX,OAAO,CACN,yDAAyD,CAC1D;aACA,GAAG,CAAC,YAAY,EAAE,aAAa,CAAwB,CAAC;IAC7D,CAAC;IAED,UAAU,CAAC,GAA0C;QACnD,OAAO,IAAI,CAAC,EAAE;aACX,OAAO,CACN,iDAAiD,CAClD;aACA,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,eAAyB,CAAC;IACvE,CAAC;IAED,gBAAgB,CAAC,EACf,aAAa,EACb,UAAU,GAIX;QACC,OACE,IAAI,CAAC,EAAE;aACJ,OAAO,CACN;;4CAEkC,CACnC;aACA,GAAG,CACF,aAAa,CAAC,OAAO,EACrB,aAAa,CAAC,SAAS,EACvB,aAAa,CAAC,OAAO,EACrB,aAAa,CAAC,aAAa,EAC3B,aAAa,CAAC,uBAAuB,CAE1C,CAAC,KAAK,CAAC;IACV,CAAC;IAED,cAAc,CACZ,YAAoB,EACpB,OAAe,EACf,cAA2B;QAE3B,IAAI,CAAC,EAAE;aACJ,OAAO,CACN,0DAA0D,CAC3D;aACA,GAAG,CAAC,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,iBAAiB,CAAC,EAChB,YAAY,EACZ,GAAG,EACH,SAAS,GACmD;QAC5D,IAAI,CAAC,EAAE;aACJ,OAAO,CACN,mEAAmE,CACpE;aACA,GAAG,CAAC,YAAY,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;IACvC,CAAC;IAED,WAAW,CAAC,kBAAiC;QAC3C,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAC1C,OAAO,SAAS,CAAC;IACnB,CAAC;CACF"}
@@ -0,0 +1,14 @@
1
+ import { type Database as DatabaseT } from "better-sqlite3";
2
+ import { type IncomingSyncStream, type OutgoingSyncQueue, type Peer } from "cojson";
3
+ export declare class SQLiteNode {
4
+ private readonly syncManager;
5
+ private readonly dbClient;
6
+ constructor(db: DatabaseT, fromLocalNode: IncomingSyncStream, toLocalNode: OutgoingSyncQueue);
7
+ static asPeer({ filename, trace, localNodeName, }: {
8
+ filename: string;
9
+ trace?: boolean;
10
+ localNodeName?: string;
11
+ }): Promise<Peer>;
12
+ static open(filename: string, fromLocalNode: IncomingSyncStream, toLocalNode: OutgoingSyncQueue): Promise<SQLiteNode>;
13
+ }
14
+ //# sourceMappingURL=sqliteNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqliteNode.d.ts","sourceRoot":"","sources":["../src/sqliteNode.ts"],"names":[],"mappings":"AAAA,OAAiB,EAAE,KAAK,QAAQ,IAAI,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,IAAI,EAGV,MAAM,QAAQ,CAAC;AAIhB,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAe;gBAGtC,EAAE,EAAE,SAAS,EACb,aAAa,EAAE,kBAAkB,EACjC,WAAW,EAAE,iBAAiB;WA2CnB,MAAM,CAAC,EAClB,QAAQ,EACR,KAAK,EACL,aAAuB,GACxB,EAAE;QACD,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,GAAG,OAAO,CAAC,IAAI,CAAC;WAgBJ,IAAI,CACf,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,kBAAkB,EACjC,WAAW,EAAE,iBAAiB;CAwFjC"}
@@ -25,7 +25,7 @@ export class SQLiteNode {
25
25
  }
26
26
  catch (e) {
27
27
  logger.error(`Error reading from localNode, handling msg\n\n${JSON.stringify(msg, (k, v) => k === "changes" || k === "encryptedChanges"
28
- ? v.slice(0, 20) + "..."
28
+ ? `${v.slice(0, 20)}...`
29
29
  : v)}`);
30
30
  }
31
31
  }
@@ -56,24 +56,24 @@ export class SQLiteNode {
56
56
  lastSignature TEXT,
57
57
  UNIQUE (sessionID, coValue)
58
58
  );`).run();
59
- db.prepare(`CREATE INDEX IF NOT EXISTS sessionsByCoValue ON sessions (coValue);`).run();
59
+ db.prepare("CREATE INDEX IF NOT EXISTS sessionsByCoValue ON sessions (coValue);").run();
60
60
  db.prepare(`CREATE TABLE IF NOT EXISTS coValues (
61
61
  rowID INTEGER PRIMARY KEY,
62
62
  id TEXT NOT NULL UNIQUE,
63
63
  header TEXT NOT NULL UNIQUE
64
64
  );`).run();
65
- db.prepare(`CREATE INDEX IF NOT EXISTS coValuesByID ON coValues (id);`).run();
65
+ db.prepare("CREATE INDEX IF NOT EXISTS coValuesByID ON coValues (id);").run();
66
66
  db.pragma("user_version = 1");
67
67
  }
68
68
  if (oldVersion <= 1) {
69
69
  // fix embarrassing off-by-one error for transaction indices
70
70
  const txs = db
71
- .prepare(`SELECT * FROM transactions`)
71
+ .prepare("SELECT * FROM transactions")
72
72
  .all();
73
73
  for (const tx of txs) {
74
- db.prepare(`DELETE FROM transactions WHERE ses = ? AND idx = ?`).run(tx.ses, tx.idx);
74
+ db.prepare("DELETE FROM transactions WHERE ses = ? AND idx = ?").run(tx.ses, tx.idx);
75
75
  tx.idx -= 1;
76
- db.prepare(`INSERT INTO transactions (ses, idx, tx) VALUES (?, ?, ?)`).run(tx.ses, tx.idx, tx.tx);
76
+ db.prepare("INSERT INTO transactions (ses, idx, tx) VALUES (?, ?, ?)").run(tx.ses, tx.idx, tx.tx);
77
77
  }
78
78
  db.pragma("user_version = 2");
79
79
  }
@@ -84,7 +84,7 @@ export class SQLiteNode {
84
84
  signature TEXT NOT NULL,
85
85
  PRIMARY KEY (ses, idx)
86
86
  ) WITHOUT ROWID;`).run();
87
- db.prepare(`ALTER TABLE sessions ADD COLUMN bytesSinceLastSignature INTEGER;`).run();
87
+ db.prepare("ALTER TABLE sessions ADD COLUMN bytesSinceLastSignature INTEGER;").run();
88
88
  db.pragma("user_version = 3");
89
89
  }
90
90
  return new SQLiteNode(db, fromLocalNode, toLocalNode);
@@ -1 +1 @@
1
- {"version":3,"file":"sqliteNode.js","sourceRoot":"","sources":["../src/sqliteNode.ts"],"names":[],"mappings":"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"}
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.10.8",
4
+ "version": "0.11.0",
5
5
  "main": "dist/index.js",
6
- "types": "src/index.ts",
6
+ "types": "dist/index.d.ts",
7
7
  "license": "MIT",
8
8
  "dependencies": {
9
9
  "better-sqlite3": "^11.7.0",
10
- "cojson": "0.10.8",
11
- "cojson-storage": "0.10.8"
10
+ "cojson": "0.11.0",
11
+ "cojson-storage": "0.11.0"
12
12
  },
13
13
  "devDependencies": {
14
14
  "@types/better-sqlite3": "^7.6.12",
@@ -1,14 +1,11 @@
1
- import { Database as DatabaseT } from "better-sqlite3";
1
+ import type { Database as DatabaseT } from "better-sqlite3";
2
2
  import {
3
- CojsonInternalTypes,
4
- OutgoingSyncQueue,
5
- SessionID,
3
+ type CojsonInternalTypes,
4
+ type OutgoingSyncQueue,
5
+ type SessionID,
6
6
  logger,
7
7
  } from "cojson";
8
- import RawCoID = CojsonInternalTypes.RawCoID;
9
- import Signature = CojsonInternalTypes.Signature;
10
- import Transaction = CojsonInternalTypes.Transaction;
11
- import {
8
+ import type {
12
9
  DBClientInterface,
13
10
  SessionRow,
14
11
  SignatureAfterRow,
@@ -17,6 +14,10 @@ import {
17
14
  TransactionRow,
18
15
  } from "cojson-storage";
19
16
 
17
+ type RawCoID = CojsonInternalTypes.RawCoID;
18
+ type Signature = CojsonInternalTypes.Signature;
19
+ type Transaction = CojsonInternalTypes.Transaction;
20
+
20
21
  export type RawCoValueRow = {
21
22
  id: CojsonInternalTypes.RawCoID;
22
23
  header: string;
@@ -43,7 +44,7 @@ export class SQLiteClient implements DBClientInterface {
43
44
 
44
45
  getCoValue(coValueId: RawCoID): StoredCoValueRow | undefined {
45
46
  const coValueRow = this.db
46
- .prepare(`SELECT * FROM coValues WHERE id = ?`)
47
+ .prepare("SELECT * FROM coValues WHERE id = ?")
47
48
  .get(coValueId) as RawCoValueRow & { rowID: number };
48
49
 
49
50
  if (!coValueRow) return;
@@ -58,7 +59,7 @@ export class SQLiteClient implements DBClientInterface {
58
59
  };
59
60
  } catch (e) {
60
61
  const headerValue = coValueRow?.header ?? "";
61
- logger.warn("Invalid JSON in header: " + headerValue, {
62
+ logger.warn(`Invalid JSON in header: ${headerValue}`, {
62
63
  id: coValueId,
63
64
  });
64
65
  return;
@@ -67,7 +68,7 @@ export class SQLiteClient implements DBClientInterface {
67
68
 
68
69
  getCoValueSessions(coValueRowId: number): StoredSessionRow[] {
69
70
  return this.db
70
- .prepare<number>(`SELECT * FROM sessions WHERE coValue = ?`)
71
+ .prepare<number>("SELECT * FROM sessions WHERE coValue = ?")
71
72
  .all(coValueRowId) as StoredSessionRow[];
72
73
  }
73
74
 
@@ -77,7 +78,7 @@ export class SQLiteClient implements DBClientInterface {
77
78
  ): StoredSessionRow | undefined {
78
79
  return this.db
79
80
  .prepare<[number, string]>(
80
- `SELECT * FROM sessions WHERE coValue = ? AND sessionID = ?`,
81
+ "SELECT * FROM sessions WHERE coValue = ? AND sessionID = ?",
81
82
  )
82
83
  .get(coValueRowId, sessionID) as StoredSessionRow | undefined;
83
84
  }
@@ -88,7 +89,7 @@ export class SQLiteClient implements DBClientInterface {
88
89
  ): TransactionRow[] {
89
90
  const txs = this.db
90
91
  .prepare<[number, number]>(
91
- `SELECT * FROM transactions WHERE ses = ? AND idx >= ?`,
92
+ "SELECT * FROM transactions WHERE ses = ? AND idx >= ?",
92
93
  )
93
94
  .all(sessionRowId, firstNewTxIdx) as RawTransactionRow[];
94
95
 
@@ -109,7 +110,7 @@ export class SQLiteClient implements DBClientInterface {
109
110
  ): SignatureAfterRow[] {
110
111
  return this.db
111
112
  .prepare<[number, number]>(
112
- `SELECT * FROM signatureAfter WHERE ses = ? AND idx >= ?`,
113
+ "SELECT * FROM signatureAfter WHERE ses = ? AND idx >= ?",
113
114
  )
114
115
  .all(sessionRowId, firstNewTxIdx) as SignatureAfterRow[];
115
116
  }
@@ -117,7 +118,7 @@ export class SQLiteClient implements DBClientInterface {
117
118
  addCoValue(msg: CojsonInternalTypes.NewContentMessage): number {
118
119
  return this.db
119
120
  .prepare<[CojsonInternalTypes.RawCoID, string]>(
120
- `INSERT INTO coValues (id, header) VALUES (?, ?)`,
121
+ "INSERT INTO coValues (id, header) VALUES (?, ?)",
121
122
  )
122
123
  .run(msg.id, JSON.stringify(msg.header)).lastInsertRowid as number;
123
124
  }
@@ -153,7 +154,7 @@ export class SQLiteClient implements DBClientInterface {
153
154
  ) {
154
155
  this.db
155
156
  .prepare<[number, number, string]>(
156
- `INSERT INTO transactions (ses, idx, tx) VALUES (?, ?, ?)`,
157
+ "INSERT INTO transactions (ses, idx, tx) VALUES (?, ?, ?)",
157
158
  )
158
159
  .run(sessionRowID, nextIdx, JSON.stringify(newTransaction));
159
160
  }
@@ -165,12 +166,13 @@ export class SQLiteClient implements DBClientInterface {
165
166
  }: { sessionRowID: number; idx: number; signature: Signature }) {
166
167
  this.db
167
168
  .prepare<[number, number, string]>(
168
- `INSERT INTO signatureAfter (ses, idx, signature) VALUES (?, ?, ?)`,
169
+ "INSERT INTO signatureAfter (ses, idx, signature) VALUES (?, ?, ?)",
169
170
  )
170
171
  .run(sessionRowID, idx, signature);
171
172
  }
172
173
 
173
174
  transaction(operationsCallback: () => unknown) {
174
175
  this.db.transaction(operationsCallback)();
176
+ return undefined;
175
177
  }
176
178
  }
package/src/sqliteNode.ts CHANGED
@@ -1,12 +1,12 @@
1
- import Database, { Database as DatabaseT } from "better-sqlite3";
1
+ import Database, { type Database as DatabaseT } from "better-sqlite3";
2
2
  import {
3
- IncomingSyncStream,
4
- OutgoingSyncQueue,
5
- Peer,
3
+ type IncomingSyncStream,
4
+ type OutgoingSyncQueue,
5
+ type Peer,
6
6
  cojsonInternals,
7
7
  logger,
8
8
  } from "cojson";
9
- import { SyncManager, TransactionRow } from "cojson-storage";
9
+ import { SyncManager, type TransactionRow } from "cojson-storage";
10
10
  import { SQLiteClient } from "./sqliteClient.js";
11
11
 
12
12
  export class SQLiteNode {
@@ -46,7 +46,7 @@ export class SQLiteNode {
46
46
  msg,
47
47
  (k, v) =>
48
48
  k === "changes" || k === "encryptedChanges"
49
- ? v.slice(0, 20) + "..."
49
+ ? `${v.slice(0, 20)}...`
50
50
  : v,
51
51
  )}`,
52
52
  );
@@ -117,7 +117,7 @@ export class SQLiteNode {
117
117
  ).run();
118
118
 
119
119
  db.prepare(
120
- `CREATE INDEX IF NOT EXISTS sessionsByCoValue ON sessions (coValue);`,
120
+ "CREATE INDEX IF NOT EXISTS sessionsByCoValue ON sessions (coValue);",
121
121
  ).run();
122
122
 
123
123
  db.prepare(
@@ -129,7 +129,7 @@ export class SQLiteNode {
129
129
  ).run();
130
130
 
131
131
  db.prepare(
132
- `CREATE INDEX IF NOT EXISTS coValuesByID ON coValues (id);`,
132
+ "CREATE INDEX IF NOT EXISTS coValuesByID ON coValues (id);",
133
133
  ).run();
134
134
 
135
135
  db.pragma("user_version = 1");
@@ -138,17 +138,17 @@ export class SQLiteNode {
138
138
  if (oldVersion <= 1) {
139
139
  // fix embarrassing off-by-one error for transaction indices
140
140
  const txs = db
141
- .prepare(`SELECT * FROM transactions`)
141
+ .prepare("SELECT * FROM transactions")
142
142
  .all() as TransactionRow[];
143
143
 
144
144
  for (const tx of txs) {
145
- db.prepare(`DELETE FROM transactions WHERE ses = ? AND idx = ?`).run(
145
+ db.prepare("DELETE FROM transactions WHERE ses = ? AND idx = ?").run(
146
146
  tx.ses,
147
147
  tx.idx,
148
148
  );
149
149
  tx.idx -= 1;
150
150
  db.prepare(
151
- `INSERT INTO transactions (ses, idx, tx) VALUES (?, ?, ?)`,
151
+ "INSERT INTO transactions (ses, idx, tx) VALUES (?, ?, ?)",
152
152
  ).run(tx.ses, tx.idx, tx.tx);
153
153
  }
154
154
 
@@ -166,7 +166,7 @@ export class SQLiteNode {
166
166
  ).run();
167
167
 
168
168
  db.prepare(
169
- `ALTER TABLE sessions ADD COLUMN bytesSinceLastSignature INTEGER;`,
169
+ "ALTER TABLE sessions ADD COLUMN bytesSinceLastSignature INTEGER;",
170
170
  ).run();
171
171
 
172
172
  db.pragma("user_version = 3");
package/tsconfig.json CHANGED
@@ -9,7 +9,9 @@
9
9
  "skipLibCheck": true,
10
10
  "forceConsistentCasingInFileNames": true,
11
11
  "noUncheckedIndexedAccess": true,
12
- "esModuleInterop": true
12
+ "esModuleInterop": true,
13
+ "declaration": true,
14
+ "declarationMap": true
13
15
  },
14
16
  "include": ["./src/**/*"]
15
17
  }