-
Notifications
You must be signed in to change notification settings - Fork 190
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* fixes build error, uses temp apibara, adds install to docker * add hello world ws * ws in core * fix state * improve react API * add in example and stream * ws works, refactors * clean * merge * fix build error * remove indexer * remove unused torii deps * remove cairo * fix settings.json * lock * fix lock * revert bevy cargo.toml
- Loading branch information
1 parent
08aabc5
commit 4a1cc78
Showing
26 changed files
with
804 additions
and
661 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,4 @@ | ||
{ | ||
"cairo1.languageServerPath": "/workspaces/dojo/target/release/dojo-language-server", | ||
"cairo1.enableLanguageServer": true, | ||
} | ||
"cairo1.enableLanguageServer": true | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
export type MessageListener = (message: any) => void; | ||
|
||
export class WebSocketProvider { | ||
public ws: WebSocket; | ||
public listeners: MessageListener[]; | ||
|
||
constructor(ws: string) { | ||
this.ws = new WebSocket(ws); | ||
this.listeners = []; | ||
|
||
this.ws.addEventListener("message", (event) => { | ||
const message = JSON.parse(event.data); | ||
this.listeners.forEach((listener) => listener(message)); | ||
}); | ||
|
||
this.ws.addEventListener("error", (event) => { | ||
console.error("WebSocket error:", event); | ||
}); | ||
|
||
this.ws.addEventListener("close", (event) => { | ||
console.log("WebSocket closed:", event); | ||
}); | ||
} | ||
|
||
sendMessage(message: any): void { | ||
if (this.ws.readyState === WebSocket.OPEN) { | ||
this.ws.send(JSON.stringify(message)); | ||
} else { | ||
console.error("WebSocket is not open:", this.ws.readyState); | ||
} | ||
} | ||
|
||
addMessageListener(listener: MessageListener): void { | ||
this.listeners.push(listener); | ||
} | ||
|
||
removeMessageListener(listener: MessageListener): void { | ||
this.listeners = this.listeners.filter((l) => l !== listener); | ||
} | ||
|
||
close(): void { | ||
this.ws.close(); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,3 @@ | ||
import { RPCProvider } from "./RPCProvider"; | ||
export { RPCProvider }; | ||
import { WebSocketProvider } from "./WSProvider"; | ||
export { RPCProvider, WebSocketProvider }; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,94 @@ | ||
import { WebSocketProvider, MessageListener } from "../WSProvider"; | ||
|
||
// Mock the WebSocket class | ||
class MockWebSocket { | ||
url: string; | ||
listeners: Record<string, ((event: any) => void)[]>; | ||
lastSentData?: string; | ||
|
||
constructor(url: string) { | ||
this.url = url; | ||
this.listeners = { | ||
message: [], | ||
error: [], | ||
close: [], | ||
}; | ||
} | ||
|
||
addEventListener(type: string, listener: (event: any) => void): void { | ||
this.listeners[type].push(listener); | ||
} | ||
|
||
removeEventListener(type: string, listener: (event: any) => void): void { | ||
this.listeners[type] = this.listeners[type].filter(l => l !== listener); | ||
} | ||
|
||
send(data: string): void { | ||
this.lastSentData = data; | ||
} | ||
|
||
simulateEvent(type: string, event: any): void { | ||
this.listeners[type].forEach(listener => listener(event)); | ||
} | ||
|
||
close(): void { | ||
this.simulateEvent("close", {}); | ||
} | ||
} | ||
|
||
describe("WebSocketProvider", () => { | ||
let mockWebSocket: MockWebSocket; | ||
|
||
beforeEach(() => { | ||
mockWebSocket = new MockWebSocket("ws://test"); | ||
(global as any).WebSocket = jest.fn().mockImplementation(() => mockWebSocket); | ||
}); | ||
|
||
test("constructor", () => { | ||
const provider = new WebSocketProvider("ws://test"); | ||
|
||
expect((global as any).WebSocket).toHaveBeenCalledWith("ws://test"); | ||
}); | ||
|
||
test("sendMessage", () => { | ||
const provider = new WebSocketProvider("ws://test"); | ||
const message = { hello: "world" }; | ||
|
||
provider.sendMessage(message); | ||
|
||
expect(mockWebSocket.lastSentData).toEqual(JSON.stringify(message)); | ||
}); | ||
|
||
test("addMessageListener", () => { | ||
const provider = new WebSocketProvider("ws://test"); | ||
const listener: MessageListener = jest.fn(); | ||
|
||
provider.addMessageListener(listener); | ||
|
||
const message = { hello: "world" }; | ||
mockWebSocket.simulateEvent("message", { data: JSON.stringify(message) }); | ||
|
||
expect(listener).toHaveBeenCalledWith(message); | ||
}); | ||
|
||
test("removeMessageListener", () => { | ||
const provider = new WebSocketProvider("ws://test"); | ||
const listener: MessageListener = jest.fn(); | ||
|
||
provider.addMessageListener(listener); | ||
provider.removeMessageListener(listener); | ||
|
||
const message = { hello: "world" }; | ||
mockWebSocket.simulateEvent("message", { data: JSON.stringify(message) }); | ||
|
||
expect(listener).not.toHaveBeenCalled(); | ||
}); | ||
|
||
test("close", () => { | ||
const provider = new WebSocketProvider("ws://test"); | ||
|
||
provider.close(); | ||
|
||
expect(mockWebSocket.listeners.close.length).toBe(1); | ||
}); | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.