Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
141 changes: 10 additions & 131 deletions bun.lock

Large diffs are not rendered by default.

13 changes: 7 additions & 6 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@
],
"scripts": {
"dev": "vite --config vite.config.site.mts",
"dev-server": "bunx partykit dev partykit/party.ts",
"dev-server": "bunx wrangler dev partykit/party.ts",
"dev-extension": "cd extension && bun run dev",
"deploy-server": "bunx partykit deploy",
"deploy-server:staging": "bunx partykit deploy --preview staging",
"deploy-server": "bunx wrangler deploy",
"deploy-server:staging": "bunx wrangler deploy --env staging",
"build-site": "vite build website --config vite.config.site.mts",
"build-packages": "for dir in packages/*; do (cd \"$dir\" && bun run build); done",
"build-extension": "cd extension && bun run build",
Expand All @@ -24,7 +24,8 @@
"release": "bun run build-packages && changeset publish",
"lint": "bunx tsc && cd website && bunx tsc && cd .. && for dir in packages/*; do (cd \"$dir\" && bunx tsc); done && cd extension && bunx tsc",
"load-test": "bun load-test/src/runner.ts",
"load-test:full": "bun load-test/src/runner.ts --config full-suite"
"load-test:full": "bun load-test/src/runner.ts --config full-suite",
"generate-types": "bunx wrangler types --include-runtime=false"
},
"devDependencies": {
"@changesets/cli": "^2.27.9",
Expand All @@ -46,12 +47,12 @@
"@supabase/supabase-js": "^2.57.4",
"canvas-confetti": "^1.9.2",
"html2canvas": "^1.4.1",
"partykit": "0.0.108",
"partyserver": "^0.1.0",
"profane-words": "^1.5.11",
"randomcolor": "^0.6.2",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"y-partykit": "0.0.31",
"y-partyserver": "^1.0.0",
"yjs": "13.6.18"
}
}
2 changes: 1 addition & 1 deletion packages/playhtml/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@
"dependencies": {
"@playhtml/common": "0.5.0",
"@syncedstore/core": "^0.6.0",
"y-partykit": "^0.0.31",
"y-partyserver": "^1.0.0",
"yjs": "13.6.18"
}
}
6 changes: 3 additions & 3 deletions packages/playhtml/src/cursors/cursor-client.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type YPartyKitProvider from "y-partykit/provider";
import type YProvider from "y-partyserver/provider";
import {
CursorPresence,
CursorPresenceView,
Expand Down Expand Up @@ -353,8 +353,8 @@ export class CursorClientAwareness {
private pendingRemovals: Map<string, ReturnType<typeof setTimeout>> = new Map();

constructor(
private provider: YPartyKitProvider,
private options: CursorOptions = {},
private provider: YProvider,
private options: CursorOptions = {}
) {
this.playerIdentity =
options.playerIdentity || generatePersistentPlayerIdentity();
Expand Down
40 changes: 17 additions & 23 deletions packages/playhtml/src/index.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/// <reference lib="dom"/>
/// <reference types="vite/client" />
import YPartyKitProvider from "y-partykit/provider";
import YProvider from "y-partyserver/provider";
import "./style.scss";
import {
ElementData,
Expand Down Expand Up @@ -147,8 +147,8 @@ function normalizeRoomId(host: string, roomString: string): string {
return encodeURIComponent(normalized);
}

let yprovider: YPartyKitProvider;
let cursorProvider: YPartyKitProvider | null = null;
let yprovider: YProvider;
let cursorProvider: YProvider | null = null;
let cursorClient: CursorClientAwareness | null = null;
let presenceAPI: PresenceAPI | null = null;
// @ts-ignore, will be removed
Expand Down Expand Up @@ -198,19 +198,19 @@ function handleNewSharedReference(element: HTMLElement): void {
discoveredSharedReferences.add(referenceKey);

// Send updated shared references to the server if we're connected
if (yprovider?.ws && yprovider.ws.readyState === WebSocket.OPEN) {
if (yprovider?.wsconnected) {
try {
const newReference = { domain, path, elementId };
// Send individual reference update
yprovider.ws.send(
yprovider.sendMessage(
JSON.stringify({
type: "add-shared-reference",
reference: newReference,
}),
);

// Request permissions for this specific element
yprovider.ws.send(
yprovider.sendMessage(
JSON.stringify({
type: "export-permissions",
elementIds: [elementId],
Expand Down Expand Up @@ -244,7 +244,7 @@ function handleNewSharedElement(element: HTMLElement): void {
sharedPermissions.set(elementId, permissionMode);

// Send to server if connected
if (yprovider?.ws && yprovider.ws.readyState === WebSocket.OPEN) {
if (yprovider?.wsconnected) {
try {
// Register this element as shared with the server
const sharedElement = {
Expand All @@ -253,7 +253,7 @@ function handleNewSharedElement(element: HTMLElement): void {
path: window.location.pathname,
};

yprovider.ws.send(
yprovider.sendMessage(
JSON.stringify({
type: "register-shared-element",
element: sharedElement,
Expand Down Expand Up @@ -402,21 +402,13 @@ function getTagTypes(): (TagType | string)[] {
}

function sendPlayEvent(eventMessage: EventMessage) {
if (!yprovider.ws) {
return;
}
yprovider.ws.send(JSON.stringify(eventMessage));
yprovider.sendMessage(JSON.stringify(eventMessage));
}

function onMessage(evt: MessageEvent) {
// ignore non-relevant events
if (evt.data instanceof Blob) {
return;
}

function onMessage(data: string) {
let message: any;
try {
message = JSON.parse(evt.data);
message = JSON.parse(data);
} catch (err) {
return;
}
Expand Down Expand Up @@ -549,7 +541,7 @@ async function initPlayHTML({
: null;

// Create provider with shared element parameters
yprovider = new YPartyKitProvider(partykitHost, room, doc, {
yprovider = new YProvider(partykitHost, room, doc, {
params: {
sharedElements: JSON.stringify(sharedElements),
sharedReferences: JSON.stringify(sharedReferences),
Expand Down Expand Up @@ -600,7 +592,7 @@ async function initPlayHTML({
// Only create separate provider if cursor room is different from element room
if (cursorRoom !== room) {
const cursorDoc = new Y.Doc();
cursorProvider = new YPartyKitProvider(
cursorProvider = new YProvider(
partykitHost,
cursorRoom,
cursorDoc,
Expand Down Expand Up @@ -687,6 +679,8 @@ async function initPlayHTML({
yprovider.on("sync", (connected: boolean) => {
if (!connected) {
console.error("Issue connecting to yjs...");
} else {
yprovider.on("custom-message", onMessage);
}
if (hasSynced) {
return;
Expand All @@ -703,8 +697,8 @@ async function initPlayHTML({
if (sharedReferences.length > 0) {
try {
const elementIds = sharedReferences.map((r) => r.elementId);
yprovider.ws?.send(
JSON.stringify({ type: "export-permissions", elementIds }),
yprovider.sendMessage(
JSON.stringify({ type: "export-permissions", elementIds })
);
} catch (error) {
console.error("[PLAYHTML] Error during post-sync setup:", error);
Expand Down
5 changes: 0 additions & 5 deletions partykit.json

This file was deleted.

Loading