From afcd914b5f12a9c5aa63655dd773a3ff227f4330 Mon Sep 17 00:00:00 2001 From: Dhruv Soni Date: Wed, 27 Mar 2024 01:51:33 +0530 Subject: [PATCH] improved version --- packages/connect/src/connect-s3.ts | 20 +++++++++++++++----- packages/connect/src/index.ts | 12 +++++++++--- packages/fireproof/test/www/todo-aws.html | 1 + 3 files changed, 25 insertions(+), 8 deletions(-) diff --git a/packages/connect/src/connect-s3.ts b/packages/connect/src/connect-s3.ts index b7ba1783..6f7a26a9 100644 --- a/packages/connect/src/connect-s3.ts +++ b/packages/connect/src/connect-s3.ts @@ -6,7 +6,7 @@ import { Base64 } from "js-base64" export class ConnectS3 extends Connection { uploadUrl: URL downloadUrl: URL - ws: WebSocket + ws: WebSocket | undefined messagePromise: Promise messageResolve?: (value: Uint8Array[] | PromiseLike) => void @@ -14,7 +14,13 @@ export class ConnectS3 extends Connection { super() this.uploadUrl = new URL(upload) this.downloadUrl = new URL(download) - this.ws = new WebSocket(websocket) + if(websocket.length!=0) + { + this.ws = new WebSocket(websocket) + } + else{ + this.ws=undefined + } this.messagePromise = new Promise((resolve, reject) => { this.messageResolve = resolve; }) @@ -48,7 +54,8 @@ export class ConnectS3 extends Connection { body: JSON.stringify(crdtEntry), }) const result = await done.json() - if (result.status != 201) { + if (result.status != 201) + { throw new Error("failed to upload data " + JSON.parse(result.body).message) } this.parents = [event.cid] @@ -66,15 +73,18 @@ export class ConnectS3 extends Connection { async onConnect() { - console.log("Is the onconnect function being called?") if (!this.loader || !this.taskManager) { throw new Error("loader and taskManager must be set") } + + if(this.ws==undefined) + { + return; + } this.ws.addEventListener("message", async (event: any) => { const data = JSON.parse(event.data); const bytes = Base64.toUint8Array(data.items[0].data) const afn = async () => { - console.log("Inside the afn"); const uint8ArrayBuffer = bytes as Uint8Array const eventBlock = await this.createEventBlock(uint8ArrayBuffer) await this.taskManager!.handleEvent(eventBlock) diff --git a/packages/connect/src/index.ts b/packages/connect/src/index.ts index dd0ad945..9c9d06a5 100644 --- a/packages/connect/src/index.ts +++ b/packages/connect/src/index.ts @@ -30,10 +30,16 @@ class ConnectRaw extends Connection { } export const connect = { - s3free: ({ blockstore }: Connectable, databasename: string) => { - // const upload = 'https://udvtu5wy39.execute-api.us-east-2.amazonaws.com/uploads' + s3free: ({ blockstore }: Connectable) => { + const upload = 'https://udvtu5wy39.execute-api.us-east-2.amazonaws.com/uploads' + const download = 'https://crdt-s3uploadbucket-dcjyurxwxmba.s3.us-east-2.amazonaws.com' + const websocket="" + const connection = new ConnectS3(upload, download, websocket) + connection.connect(blockstore) + return connection + }, + awsfree: ({ blockstore }: Connectable, databasename: string) => { const upload = 'https://aq0pbyfywg.execute-api.us-east-1.amazonaws.com/uploads' - // const download = 'https://crdt-s3uploadbucket-dcjyurxwxmba.s3.us-east-2.amazonaws.com' const download = 'https://fireproof-aws-connector-s3uploadbucket-yll7d1l9zlyh.s3.amazonaws.com' const websocket = `wss://fhpo61crph.execute-api.us-east-1.amazonaws.com/Prod?database=${databasename}` const connection = new ConnectS3(upload, download, websocket) diff --git a/packages/fireproof/test/www/todo-aws.html b/packages/fireproof/test/www/todo-aws.html index 355b643a..39012de6 100644 --- a/packages/fireproof/test/www/todo-aws.html +++ b/packages/fireproof/test/www/todo-aws.html @@ -39,6 +39,7 @@ dbName = name db = fireproof(name, { autoCompact: 100 }) cx = connect.s3(db,{ upload: 'https://aq0pbyfywg.execute-api.us-east-1.amazonaws.com/uploads', download:'https://fireproof-aws-connector-s3uploadbucket-yll7d1l9zlyh.s3.amazonaws.com', websocket:'wss://fhpo61crph.execute-api.us-east-1.amazonaws.com/Prod',databasename: dbName }) + // cx=connect.s3free(db); cx.ready.then(async () => { const span = document.querySelector('#cxInfo') span.innerText = `📡`