From 825a98a3c2c2d326828ba2fc72f7adbe1d434fa4 Mon Sep 17 00:00:00 2001 From: yousefed Date: Sun, 3 Dec 2023 21:22:55 +0100 Subject: [PATCH 1/3] upgrade partykit --- package-lock.json | 28 +++++++++++++------ .../Examples/BlockNote/ReactBlockNote.tsx | 1 + .../docs/docs/real-time-collaboration.md | 2 +- packages/website/package.json | 2 +- packages/website/partykitserver.ts | 22 +++++++++------ 5 files changed, 36 insertions(+), 19 deletions(-) diff --git a/package-lock.json b/package-lock.json index eb2008b14a..b0606e0700 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12797,8 +12797,9 @@ } }, "node_modules/lib0": { - "version": "0.2.78", - "license": "MIT", + "version": "0.2.88", + "resolved": "https://registry.npmjs.org/lib0/-/lib0-0.2.88.tgz", + "integrity": "sha512-KyroiEvCeZcZEMx5Ys+b4u4eEBbA1ch7XUaBhYpwa/nPMrzTjUhI4RfcytmQfYoTBPcdyx+FX6WFNIoNuJzJfQ==", "dependencies": { "isomorphic.js": "^0.2.4" }, @@ -19663,14 +19664,22 @@ } }, "node_modules/y-protocols": { - "version": "1.0.5", - "license": "MIT", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/y-protocols/-/y-protocols-1.0.6.tgz", + "integrity": "sha512-vHRF2L6iT3rwj1jub/K5tYcTT/mEYDUppgNPXwp8fmLpui9f7Yeq3OEtTLVF012j39QnV+KEQpNqoN7CWU7Y9Q==", "dependencies": { - "lib0": "^0.2.42" + "lib0": "^0.2.85" + }, + "engines": { + "node": ">=16.0.0", + "npm": ">=8.0.0" }, "funding": { "type": "GitHub Sponsors ❤", "url": "https://github.com/sponsors/dmonad" + }, + "peerDependencies": { + "yjs": "^13.0.0" } }, "node_modules/y18n": { @@ -19718,10 +19727,11 @@ } }, "node_modules/yjs": { - "version": "13.6.1", - "license": "MIT", + "version": "13.6.10", + "resolved": "https://registry.npmjs.org/yjs/-/yjs-13.6.10.tgz", + "integrity": "sha512-1JcyQek1vaMyrDm7Fqfa+pvHg/DURSbVo4VmeN7wjnTKB/lZrfIPhdCj7d8sboK6zLfRBJXegTjc9JlaDd8/Zw==", "dependencies": { - "lib0": "^0.2.74" + "lib0": "^0.2.86" }, "engines": { "node": ">=16.0.0", @@ -20571,7 +20581,7 @@ "@vercel/og": "^0.5.6", "veaury": "^2.3.12", "vue-github-button": "^3.1.0", - "y-partykit": "^0.0.0-4d484bc", + "y-partykit": "^0.0.10", "yjs": "^13.6.1" }, "devDependencies": { diff --git a/packages/website/docs/.vitepress/theme/components/Examples/BlockNote/ReactBlockNote.tsx b/packages/website/docs/.vitepress/theme/components/Examples/BlockNote/ReactBlockNote.tsx index a8936ad92e..1d7ae01de6 100644 --- a/packages/website/docs/.vitepress/theme/components/Examples/BlockNote/ReactBlockNote.tsx +++ b/packages/website/docs/.vitepress/theme/components/Examples/BlockNote/ReactBlockNote.tsx @@ -45,6 +45,7 @@ export function ReactBlockNote(props: { theme: "light" | "dark" }) { const doc = new Y.Doc(); const provider = new YPartyKitProvider( "blocknote.yousefed.partykit.dev", + // "127.0.0.1:1999", "homepage-1", doc ); diff --git a/packages/website/docs/docs/real-time-collaboration.md b/packages/website/docs/docs/real-time-collaboration.md index 09212891de..4e862ee454 100644 --- a/packages/website/docs/docs/real-time-collaboration.md +++ b/packages/website/docs/docs/real-time-collaboration.md @@ -57,7 +57,7 @@ When a user edits the document, an incremental change (or "update") is captured For development purposes, you can use our Partykit server to test collaborative features. Replace the `WebrtcProvider` provider in the example below with a `YPartyKitProvider`: ```typescript -// npm install y-partykit@beta +// npm install y-partykit import YPartyKitProvider from "y-partykit/provider"; const provider = new YPartyKitProvider( diff --git a/packages/website/package.json b/packages/website/package.json index 6aaa6d3089..40dee3e51d 100644 --- a/packages/website/package.json +++ b/packages/website/package.json @@ -16,7 +16,7 @@ "@vercel/og": "^0.5.6", "veaury": "^2.3.12", "vue-github-button": "^3.1.0", - "y-partykit": "^0.0.0-4d484bc", + "y-partykit": "^0.0.10", "yjs": "^13.6.1" }, "devDependencies": { diff --git a/packages/website/partykitserver.ts b/packages/website/partykitserver.ts index 8ecc2e4ef8..bcf3e68432 100644 --- a/packages/website/partykitserver.ts +++ b/packages/website/partykitserver.ts @@ -1,10 +1,16 @@ -import type { PartyKitServer } from "partykit/server"; +import type * as Party from "partykit/server"; import { onConnect } from "y-partykit"; -// deploy with npx partykit@beta deploy partykitserver.ts --name blocknote -// preview with npx partykit@beta dev partykitserver.ts -export default { - onConnect(ws, room) { - return onConnect(ws, room, { persist: false, gc: true }); - }, -} satisfies PartyKitServer; +// deploy with npx partykit deploy partykitserver.ts --name blocknote +// preview with npx partykit dev partykitserver.ts +export default class Server implements Party.Server { + constructor(readonly party: Party.Party) {} + + onConnect(conn: Party.Connection, ctx: Party.ConnectionContext) { + // A websocket just connected! + + return onConnect(conn, this.party, { persist: false, gc: true }); + } +} + +Server satisfies Party.Worker; From 8cd4a3402acd1432b917dd238f101e358123158e Mon Sep 17 00:00:00 2001 From: yousefed Date: Sun, 3 Dec 2023 21:38:39 +0100 Subject: [PATCH 2/3] change room --- .../theme/components/Examples/BlockNote/ReactBlockNote.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/website/docs/.vitepress/theme/components/Examples/BlockNote/ReactBlockNote.tsx b/packages/website/docs/.vitepress/theme/components/Examples/BlockNote/ReactBlockNote.tsx index 1d7ae01de6..60e950490f 100644 --- a/packages/website/docs/.vitepress/theme/components/Examples/BlockNote/ReactBlockNote.tsx +++ b/packages/website/docs/.vitepress/theme/components/Examples/BlockNote/ReactBlockNote.tsx @@ -45,8 +45,8 @@ export function ReactBlockNote(props: { theme: "light" | "dark" }) { const doc = new Y.Doc(); const provider = new YPartyKitProvider( "blocknote.yousefed.partykit.dev", - // "127.0.0.1:1999", - "homepage-1", + // "127.0.0.1:1999", // (dev server) + "homepage-2", doc ); return [doc, provider]; From ac199529e1d4b772c1bdf784e076dd05ae5a0be2 Mon Sep 17 00:00:00 2001 From: yousefed Date: Sun, 3 Dec 2023 21:52:55 +0100 Subject: [PATCH 3/3] delete storage --- packages/website/partykitserver.ts | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/packages/website/partykitserver.ts b/packages/website/partykitserver.ts index bcf3e68432..03a12a2061 100644 --- a/packages/website/partykitserver.ts +++ b/packages/website/partykitserver.ts @@ -1,6 +1,8 @@ import type * as Party from "partykit/server"; import { onConnect } from "y-partykit"; +const EXPIRY_PERIOD_MILLISECONDS = 60 * 60 * 1000; // 1 hour + // deploy with npx partykit deploy partykitserver.ts --name blocknote // preview with npx partykit dev partykitserver.ts export default class Server implements Party.Server { @@ -11,6 +13,20 @@ export default class Server implements Party.Server { return onConnect(conn, this.party, { persist: false, gc: true }); } + + async onMessage(message: string) { + // const data = JSON.parse(message); + // do something, and save to storage + // await this.party.storage.put(data.id, data); + // console.log("on message"); + await this.party.storage.setAlarm(Date.now() + EXPIRY_PERIOD_MILLISECONDS); + } + + async onAlarm() { + // clear all storage in this room + console.log("alarm, delete storage"); + await this.party.storage.deleteAll(); + } } Server satisfies Party.Worker;