Compare commits

...

5 Commits

Author SHA1 Message Date
Guido D'Orsi
2c2dfb52d4 Merge pull request #2746 from garden-co/changeset-release/main
Version Packages
2025-08-15 17:00:22 +02:00
github-actions[bot]
d33917fbaa Version Packages 2025-08-15 14:59:08 +00:00
Guido D'Orsi
f0c73d9cc6 chore: changeset 2025-08-15 16:56:43 +02:00
Guido D'Orsi
d9324a9809 Merge pull request #2742 from garden-co/fix/sync-server-test
test: fix flaky syncserver test
2025-08-15 16:45:11 +02:00
Guido D'Orsi
f7b5454cc6 fix: store empty content messages with header 2025-08-15 16:43:03 +02:00
35 changed files with 190 additions and 34 deletions

View File

@@ -1,5 +1,11 @@
# passkey-svelte
## 0.0.116
### Patch Changes
- jazz-tools@0.17.3
## 0.0.115
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "chat-svelte",
"version": "0.0.115",
"version": "0.0.116",
"type": "module",
"private": true,
"scripts": {

View File

@@ -1,5 +1,12 @@
# cojson-storage-indexeddb
## 0.17.3
### Patch Changes
- Updated dependencies [f0c73d9]
- cojson@0.17.3
## 0.17.2
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "cojson-storage-indexeddb",
"version": "0.17.2",
"version": "0.17.3",
"main": "dist/index.js",
"type": "module",
"types": "dist/index.d.ts",

View File

@@ -1,5 +1,12 @@
# cojson-storage-sqlite
## 0.17.3
### Patch Changes
- Updated dependencies [f0c73d9]
- cojson@0.17.3
## 0.17.2
### Patch Changes

View File

@@ -1,7 +1,7 @@
{
"name": "cojson-storage-sqlite",
"type": "module",
"version": "0.17.2",
"version": "0.17.3",
"main": "dist/index.js",
"types": "dist/index.d.ts",
"license": "MIT",

View File

@@ -1,5 +1,12 @@
# cojson-transport-nodejs-ws
## 0.17.3
### Patch Changes
- Updated dependencies [f0c73d9]
- cojson@0.17.3
## 0.17.2
### Patch Changes

View File

@@ -1,7 +1,7 @@
{
"name": "cojson-transport-ws",
"type": "module",
"version": "0.17.2",
"version": "0.17.3",
"main": "dist/index.js",
"types": "dist/index.d.ts",
"license": "MIT",

View File

@@ -1,5 +1,11 @@
# cojson
## 0.17.3
### Patch Changes
- f0c73d9: Allow storing empty content with header in handleNewContent
## 0.17.2
### Patch Changes

View File

@@ -25,7 +25,7 @@
},
"type": "module",
"license": "MIT",
"version": "0.17.2",
"version": "0.17.3",
"devDependencies": {
"@opentelemetry/sdk-metrics": "^2.0.0",
"libsql": "^0.5.13",

View File

@@ -706,7 +706,10 @@ export class SyncManager {
const syncedPeers = [];
if (from !== "storage" && Object.keys(contentToStore.new).length > 0) {
const hasNewContent =
contentToStore.header || Object.keys(contentToStore.new).length > 0;
if (from !== "storage" && hasNewContent) {
this.storeContent(contentToStore);
}

View File

@@ -169,6 +169,7 @@ describe("sync after the garbage collector has run", () => {
"server -> edge | KNOWN Map sessions: header/1",
"server -> storage | CONTENT Map header: true new: After: 0 New: 1",
"server -> edge | KNOWN Map sessions: header/1",
"server -> storage | CONTENT Map header: true new: ",
"client -> edge | KNOWN Group sessions: header/5",
"client -> edge | KNOWN Map sessions: header/1",
]

View File

@@ -167,6 +167,7 @@ describe("multiple clients syncing with the a cloud-like server mesh", () => {
"edge-france -> core | CONTENT ParentGroup header: true new: ",
"client -> edge-italy | LOAD Map sessions: empty",
"core -> edge-france | KNOWN ParentGroup sessions: header/6",
"core -> storage | CONTENT ParentGroup header: true new: ",
"edge-italy -> storage | LOAD Map sessions: empty",
"storage -> edge-italy | KNOWN Map sessions: empty",
"edge-italy -> core | LOAD Map sessions: empty",
@@ -588,11 +589,9 @@ describe("multiple clients syncing with the a cloud-like server mesh", () => {
"client -> edge | KNOWN Group sessions: header/5",
"client -> storage | CONTENT Group header: true new: After: 0 New: 5",
"client -> edge | KNOWN Map sessions: header/0",
"client -> storage | CONTENT Map header: true new: ",
"client -> edge | KNOWN Map sessions: header/41",
"client -> storage | CONTENT Map header: false new: After: 0 New: 41",
"storage -> client | KNOWN CORRECTION Map sessions: empty",
"client -> storage | CONTENT Map header: true new: expectContentUntil: header/100",
"client -> storage | CONTENT Map header: false new: After: 0 New: 41",
"storage -> edge | CONTENT Map header: true new: After: 41 New: 21",
"edge -> client | CONTENT Map header: false new: After: 41 New: 21",
"edge -> core | CONTENT Group header: true new: After: 0 New: 5",
@@ -607,11 +606,9 @@ describe("multiple clients syncing with the a cloud-like server mesh", () => {
"core -> edge | KNOWN Group sessions: header/5",
"core -> storage | CONTENT Group header: true new: After: 0 New: 5",
"core -> edge | KNOWN Map sessions: header/0",
"core -> storage | CONTENT Map header: true new: ",
"core -> edge | KNOWN Map sessions: header/41",
"core -> storage | CONTENT Map header: false new: After: 0 New: 41",
"storage -> core | KNOWN CORRECTION Map sessions: empty",
"core -> storage | CONTENT Map header: true new: expectContentUntil: header/100",
"core -> storage | CONTENT Map header: false new: After: 0 New: 41",
"core -> edge | KNOWN Map sessions: header/62",
"core -> storage | CONTENT Map header: false new: After: 41 New: 21",
"core -> edge | KNOWN Map sessions: header/83",

View File

@@ -555,4 +555,53 @@ describe("client syncs with a server with storage", () => {
]
`);
});
test("should store values with no transactions", async () => {
const alice = setupTestNode({
connected: true,
});
const group = alice.node.createGroup();
group.addMember("everyone", "writer");
const map = group.createMap();
await map.core.waitForSync();
const bob = setupTestNode();
bob.connectToSyncServer({
ourName: "bob",
});
const { storage } = bob.addStorage({
ourName: "bob",
});
SyncMessagesLog.clear(); // We want to focus on the sync messages happening from now
await loadCoValueOrFail(bob.node, map.id);
// The map should be stored in bob's storage
expect(storage.getKnownState(map.id)).toEqual({
header: true,
id: map.id,
sessions: {},
});
expect(
SyncMessagesLog.getMessages({
Group: group.core,
Map: map.core,
}),
).toMatchInlineSnapshot(`
[
"bob -> storage | LOAD Map sessions: empty",
"storage -> bob | KNOWN Map sessions: empty",
"bob -> server | LOAD Map sessions: empty",
"server -> bob | CONTENT Group header: true new: After: 0 New: 5",
"server -> bob | CONTENT Map header: true new: ",
"bob -> server | KNOWN Group sessions: header/5",
"bob -> storage | CONTENT Group header: true new: After: 0 New: 5",
"bob -> server | KNOWN Map sessions: header/0",
"bob -> storage | CONTENT Map header: true new: ",
]
`);
});
});

View File

@@ -1,5 +1,13 @@
# jazz-react
## 0.17.3
### Patch Changes
- Updated dependencies [f0c73d9]
- cojson@0.17.3
- jazz-tools@0.17.3
## 0.17.2
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "community-jazz-vue",
"version": "0.17.2",
"version": "0.17.3",
"type": "module",
"main": "dist/index.js",
"types": "src/index.ts",

View File

@@ -1,5 +1,14 @@
# jazz-auth-betterauth
## 0.17.3
### Patch Changes
- Updated dependencies [f0c73d9]
- cojson@0.17.3
- jazz-tools@0.17.3
- jazz-betterauth-client-plugin@0.17.3
## 0.17.2
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "jazz-auth-betterauth",
"version": "0.17.2",
"version": "0.17.3",
"type": "module",
"main": "dist/index.js",
"types": "src/index.ts",

View File

@@ -1,5 +1,11 @@
# jazz-betterauth-client-plugin
## 0.17.3
### Patch Changes
- jazz-betterauth-server-plugin@0.17.3
## 0.17.2
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "jazz-betterauth-client-plugin",
"version": "0.17.2",
"version": "0.17.3",
"type": "module",
"main": "dist/index.js",
"types": "src/index.ts",

View File

@@ -1,5 +1,13 @@
# jazz-betterauth-server-plugin
## 0.17.3
### Patch Changes
- Updated dependencies [f0c73d9]
- cojson@0.17.3
- jazz-tools@0.17.3
## 0.17.2
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "jazz-betterauth-server-plugin",
"version": "0.17.2",
"version": "0.17.3",
"type": "module",
"main": "dist/index.js",
"types": "src/index.ts",

View File

@@ -1,5 +1,15 @@
# jazz-react-auth-betterauth
## 0.17.3
### Patch Changes
- Updated dependencies [f0c73d9]
- cojson@0.17.3
- jazz-auth-betterauth@0.17.3
- jazz-tools@0.17.3
- jazz-betterauth-client-plugin@0.17.3
## 0.17.2
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "jazz-react-auth-betterauth",
"version": "0.17.2",
"version": "0.17.3",
"type": "module",
"main": "dist/index.js",
"types": "src/index.tsx",

View File

@@ -1,5 +1,15 @@
# jazz-run
## 0.17.3
### Patch Changes
- Updated dependencies [f0c73d9]
- cojson@0.17.3
- cojson-storage-sqlite@0.17.3
- cojson-transport-ws@0.17.3
- jazz-tools@0.17.3
## 0.17.2
### Patch Changes

View File

@@ -3,7 +3,7 @@
"bin": "./dist/index.js",
"type": "module",
"license": "MIT",
"version": "0.17.2",
"version": "0.17.3",
"exports": {
"./startSyncServer": {
"types": "./dist/startSyncServer.d.ts",
@@ -28,11 +28,11 @@
"@effect/printer-ansi": "^0.34.5",
"@effect/schema": "^0.71.1",
"@effect/typeclass": "^0.25.5",
"cojson": "workspace:0.17.2",
"cojson-storage-sqlite": "workspace:0.17.2",
"cojson-transport-ws": "workspace:0.17.2",
"cojson": "workspace:0.17.3",
"cojson-storage-sqlite": "workspace:0.17.3",
"cojson-transport-ws": "workspace:0.17.3",
"effect": "^3.6.5",
"jazz-tools": "workspace:0.17.2",
"jazz-tools": "workspace:0.17.3",
"ws": "^8.14.2"
},
"devDependencies": {

View File

@@ -1,4 +1,4 @@
import { createServer } from "http";
import { createServer, type Server } from "node:http";
import { mkdir } from "node:fs/promises";
import { dirname } from "node:path";
import { LocalNode } from "cojson";
@@ -104,5 +104,7 @@ export const startSyncServer = async ({
return _close.call(server);
};
return server;
Object.defineProperty(server, "localNode", { value: localNode });
return server as Server & { localNode: LocalNode };
};

View File

@@ -13,8 +13,7 @@ const TestMap = co.map({
});
describe("startSyncServer", () => {
// Fails on CI, but works locally
test.skip("persists values in storage and loads them after restart", async () => {
test("persists values in storage and loads them after restart", async () => {
// Create a temporary database file
const dbPath = join(tmpdir(), `test-${randomUUID()}.db`);

View File

@@ -1,5 +1,14 @@
# jazz-tools
## 0.17.3
### Patch Changes
- Updated dependencies [f0c73d9]
- cojson@0.17.3
- cojson-storage-indexeddb@0.17.3
- cojson-transport-ws@0.17.3
## 0.17.2
### Patch Changes

View File

@@ -140,7 +140,7 @@
},
"type": "module",
"license": "MIT",
"version": "0.17.2",
"version": "0.17.3",
"dependencies": {
"@manuscripts/prosemirror-recreate-steps": "^0.1.4",
"@scure/base": "1.2.1",

10
pnpm-lock.yaml generated
View File

@@ -2106,19 +2106,19 @@ importers:
specifier: ^0.25.5
version: 0.25.8(effect@3.11.9)
cojson:
specifier: workspace:0.17.2
specifier: workspace:0.17.3
version: link:../cojson
cojson-storage-sqlite:
specifier: workspace:0.17.2
specifier: workspace:0.17.3
version: link:../cojson-storage-sqlite
cojson-transport-ws:
specifier: workspace:0.17.2
specifier: workspace:0.17.3
version: link:../cojson-transport-ws
effect:
specifier: ^3.6.5
version: 3.11.9
jazz-tools:
specifier: workspace:0.17.2
specifier: workspace:0.17.3
version: link:../jazz-tools
ws:
specifier: ^8.14.2
@@ -25331,7 +25331,7 @@ snapshots:
'@babel/generator': 7.28.0
'@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.0)
'@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.0)
'@babel/types': 7.28.0
'@babel/types': 7.28.2
'@jest/expect-utils': 29.7.0
'@jest/transform': 29.7.0
'@jest/types': 29.6.3

View File

@@ -1,5 +1,11 @@
# jazz-react-tailwind-starter
## 0.0.147
### Patch Changes
- jazz-tools@0.17.3
## 0.0.146
### Patch Changes

View File

@@ -1,7 +1,7 @@
{
"name": "jazz-react-passkey-auth-starter",
"private": true,
"version": "0.0.146",
"version": "0.0.147",
"type": "module",
"scripts": {
"dev": "vite",

View File

@@ -1,5 +1,11 @@
# svelte-passkey-auth
## 0.0.121
### Patch Changes
- jazz-tools@0.17.3
## 0.0.120
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "svelte-passkey-auth",
"version": "0.0.120",
"version": "0.0.121",
"type": "module",
"private": true,
"scripts": {