🚀 Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more
Socket
Book a DemoInstallSign in
Socket

cojson-storage-sqlite

Package Overview
Dependencies
Maintainers
1
Versions
177
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

cojson-storage-sqlite - npm Package Compare versions

Comparing version

to
0.13.28

8

CHANGELOG.md
# cojson-storage-sqlite
## 0.13.28
### Patch Changes
- Updated dependencies [e7ccb2c]
- cojson@0.13.28
- cojson-storage@0.13.28
## 0.13.27

@@ -4,0 +12,0 @@

50

dist/tests/sqlite.test.js

@@ -5,3 +5,3 @@ import { randomUUID } from "node:crypto";

import { join } from "node:path";
import { LocalNode } from "cojson";
import { LocalNode, cojsonInternals } from "cojson";
import { SyncManager } from "cojson-storage";

@@ -246,2 +246,50 @@ import { WasmCrypto } from "cojson/crypto/WasmCrypto";

});
test("should recover missing dependencies from storage", async () => {
const agentSecret = Crypto.newRandomAgentSecret();
const account = LocalNode.internalCreateAccount({
crypto: Crypto,
});
const node1 = account.core.node;
const serverNode = new LocalNode(agentSecret, Crypto.newRandomSessionID(Crypto.getAgentID(agentSecret)), Crypto);
const [serverPeer, clientPeer] = cojsonInternals.connectedPeers(node1.agentSecret, serverNode.agentSecret, {
peer1role: "server",
peer2role: "client",
});
node1.syncManager.addPeer(serverPeer);
serverNode.syncManager.addPeer(clientPeer);
const handleSyncMessage = SyncManager.prototype.handleSyncMessage;
const mock = vi
.spyOn(SyncManager.prototype, "handleSyncMessage")
.mockImplementation(function (msg) {
if (msg.action === "content" &&
[group.core.id, account.core.id].includes(msg.id)) {
return Promise.resolve();
}
return handleSyncMessage.call(this, msg);
});
const { peer, dbPath } = await createSQLiteStorage();
node1.syncManager.addPeer(peer);
const group = node1.createGroup();
group.addMember("everyone", "writer");
const map = group.createMap();
map.set("0", 0);
mock.mockReset();
await new Promise((resolve) => setTimeout(resolve, 200));
const node2 = new LocalNode(Crypto.newRandomAgentSecret(), Crypto.newRandomSessionID(Crypto.getAgentID(agentSecret)), Crypto);
const [serverPeer2, clientPeer2] = cojsonInternals.connectedPeers(node1.agentSecret, serverNode.agentSecret, {
peer1role: "server",
peer2role: "client",
});
node2.syncManager.addPeer(serverPeer2);
serverNode.syncManager.addPeer(clientPeer2);
const { peer: peer2 } = await createSQLiteStorage(dbPath);
node2.syncManager.addPeer(peer2);
const map2 = await node2.load(map.id);
if (map2 === "unavailable") {
throw new Error("Map is unavailable");
}
expect(map2.toJSON()).toEqual({
"0": 0,
});
});
//# sourceMappingURL=sqlite.test.js.map

6

package.json
{
"name": "cojson-storage-sqlite",
"type": "module",
"version": "0.13.27",
"version": "0.13.28",
"main": "dist/index.js",

@@ -10,4 +10,4 @@ "types": "dist/index.d.ts",

"better-sqlite3": "^11.7.0",
"cojson": "0.13.27",
"cojson-storage": "0.13.27"
"cojson": "0.13.28",
"cojson-storage": "0.13.28"
},

@@ -14,0 +14,0 @@ "devDependencies": {

@@ -5,3 +5,3 @@ import { randomUUID } from "node:crypto";

import { join } from "node:path";
import { LocalNode } from "cojson";
import { LocalNode, cojsonInternals } from "cojson";
import { SyncManager } from "cojson-storage";

@@ -407,1 +407,90 @@ import { WasmCrypto } from "cojson/crypto/WasmCrypto";

});
test("should recover missing dependencies from storage", async () => {
const agentSecret = Crypto.newRandomAgentSecret();
const account = LocalNode.internalCreateAccount({
crypto: Crypto,
});
const node1 = account.core.node;
const serverNode = new LocalNode(
agentSecret,
Crypto.newRandomSessionID(Crypto.getAgentID(agentSecret)),
Crypto,
);
const [serverPeer, clientPeer] = cojsonInternals.connectedPeers(
node1.agentSecret,
serverNode.agentSecret,
{
peer1role: "server",
peer2role: "client",
},
);
node1.syncManager.addPeer(serverPeer);
serverNode.syncManager.addPeer(clientPeer);
const handleSyncMessage = SyncManager.prototype.handleSyncMessage;
const mock = vi
.spyOn(SyncManager.prototype, "handleSyncMessage")
.mockImplementation(function (this: SyncManager, msg) {
if (
msg.action === "content" &&
[group.core.id, account.core.id].includes(msg.id)
) {
return Promise.resolve();
}
return handleSyncMessage.call(this, msg);
});
const { peer, dbPath } = await createSQLiteStorage();
node1.syncManager.addPeer(peer);
const group = node1.createGroup();
group.addMember("everyone", "writer");
const map = group.createMap();
map.set("0", 0);
mock.mockReset();
await new Promise((resolve) => setTimeout(resolve, 200));
const node2 = new LocalNode(
Crypto.newRandomAgentSecret(),
Crypto.newRandomSessionID(Crypto.getAgentID(agentSecret)),
Crypto,
);
const [serverPeer2, clientPeer2] = cojsonInternals.connectedPeers(
node1.agentSecret,
serverNode.agentSecret,
{
peer1role: "server",
peer2role: "client",
},
);
node2.syncManager.addPeer(serverPeer2);
serverNode.syncManager.addPeer(clientPeer2);
const { peer: peer2 } = await createSQLiteStorage(dbPath);
node2.syncManager.addPeer(peer2);
const map2 = await node2.load(map.id);
if (map2 === "unavailable") {
throw new Error("Map is unavailable");
}
expect(map2.toJSON()).toEqual({
"0": 0,
});
});

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet