Remove legacy V1 code and clean up unused remnants

- Delete unused bloom.ts module (leftover from topic-based discovery)
- Remove maxTopicsPerOffer configuration (no longer used)
- Remove unused info field from Offer types
- Simplify generateOfferHash() to only hash SDP (remove topics param)
- Update outdated comments referencing deprecated features
- Remove backward compatibility topics field from answer responses

This completes the migration to V2 service-based architecture by
removing all remnants of the V1 topic-based system.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
2025-12-06 12:06:02 +01:00
parent 5622867411
commit 52cf734858
9 changed files with 12 additions and 91 deletions

View File

@@ -34,7 +34,7 @@ export class D1Storage implements Storage {
*/
async initializeDatabase(): Promise<void> {
await this.db.exec(`
-- Offers table (no topics)
-- WebRTC signaling offers
CREATE TABLE IF NOT EXISTS offers (
id TEXT PRIMARY KEY,
peer_id TEXT NOT NULL,
@@ -125,7 +125,7 @@ export class D1Storage implements Storage {
// D1 doesn't support true transactions yet, so we do this sequentially
for (const offer of offers) {
const id = offer.id || await generateOfferHash(offer.sdp, []);
const id = offer.id || await generateOfferHash(offer.sdp);
const now = Date.now();
await this.db.prepare(`

View File

@@ -1,22 +1,17 @@
/**
* Generates a content-based offer ID using SHA-256 hash
* Creates deterministic IDs based on offer content (sdp, topics)
* Creates deterministic IDs based on offer SDP content
* PeerID is not included as it's inferred from authentication
* Uses Web Crypto API for compatibility with both Node.js and Cloudflare Workers
*
* @param sdp - The WebRTC SDP offer
* @param topics - Array of topic strings
* @returns SHA-256 hash of the sanitized offer content
* @returns SHA-256 hash of the SDP content
*/
export async function generateOfferHash(
sdp: string,
topics: string[]
): Promise<string> {
export async function generateOfferHash(sdp: string): Promise<string> {
// Sanitize and normalize the offer content
// Only include core offer content (not peerId - that's inferred from auth)
const sanitizedOffer = {
sdp,
topics: [...topics].sort(), // Sort topics for consistency
sdp
};
// Create non-prettified JSON string

View File

@@ -36,7 +36,7 @@ export class SQLiteStorage implements Storage {
*/
private initializeDatabase(): void {
this.db.exec(`
-- Offers table (no topics)
-- WebRTC signaling offers
CREATE TABLE IF NOT EXISTS offers (
id TEXT PRIMARY KEY,
peer_id TEXT NOT NULL,
@@ -132,7 +132,7 @@ export class SQLiteStorage implements Storage {
const offersWithIds = await Promise.all(
offers.map(async (offer) => ({
...offer,
id: offer.id || await generateOfferHash(offer.sdp, []),
id: offer.id || await generateOfferHash(offer.sdp),
}))
);

View File

@@ -1,5 +1,5 @@
/**
* Represents a WebRTC signaling offer (no topics)
* Represents a WebRTC signaling offer
*/
export interface Offer {
id: string;
@@ -9,7 +9,6 @@ export interface Offer {
expiresAt: number;
lastSeen: number;
secret?: string;
info?: string;
answererPeerId?: string;
answerSdp?: string;
answeredAt?: number;
@@ -37,7 +36,6 @@ export interface CreateOfferRequest {
sdp: string;
expiresAt: number;
secret?: string;
info?: string;
}
/**