diff src/streamed_graph_client.ts @ 79:0c188ed3bcd8

starting lit upgrade. total mess right now
author drewp@bigasterisk.com
date Wed, 17 Nov 2021 13:01:08 -0800
parents 163b4339804d
children 7c93e17b1111
line wrap: on
line diff
--- a/src/streamed_graph_client.ts	Tue Feb 11 22:55:24 2020 -0800
+++ b/src/streamed_graph_client.ts	Wed Nov 17 13:01:08 2021 -0800
@@ -1,143 +1,143 @@
-// from /my/site/homepage/www/rdf/streamed-graph.js
+// // from /my/site/homepage/www/rdf/streamed-graph.js
 
-import { eachJsonLdQuad } from "./json_ld_quads";
-import { N3Store } from "n3";
-import { Store } from "n3";
+// import { eachJsonLdQuad } from "./json_ld_quads";
+// import { N3Store } from "n3";
+// import { Store } from "n3";
 
-export class StreamedGraphClient {
-  // holds a n3 Store, which is synced to a server-side
-  // store that sends patches over SSE
+// export class StreamedGraphClient {
+//   // holds a n3 Store, which is synced to a server-side
+//   // store that sends patches over SSE
 
-  onStatus: (msg: string) => void;
-  onGraphChanged: () => void;
-  store: N3Store;
-  _deletedCount: number = 0;
-  events!: EventSource;
-  constructor(
-    eventsUrl: string,
-    onGraphChanged: () => void,
-    onStatus: (status: string) => void,
-    prefixes: Array<Record<string, string>>,
-    staticGraphUrls: Array<string>
-  ) {
-    console.log("new StreamedGraph", eventsUrl);
-    this.onStatus = onStatus;
-    this.onGraphChanged = onGraphChanged;
-    this.onStatus("startup...");
+//   onStatus: (msg: string) => void;
+//   onGraphChanged: () => void;
+//   store: N3Store;
+//   _deletedCount: number = 0;
+//   events!: EventSource;
+//   constructor(
+//     eventsUrl: string,
+//     onGraphChanged: () => void,
+//     onStatus: (status: string) => void,
+//     prefixes: Array<Record<string, string>>,
+//     staticGraphUrls: Array<string>
+//   ) {
+//     console.log("new StreamedGraph", eventsUrl);
+//     this.onStatus = onStatus;
+//     this.onGraphChanged = onGraphChanged;
+//     this.onStatus("startup...");
 
-    this.store = new Store();
+//     this.store = new Store();
 
-    //     //             Object.keys(prefixes).forEach((prefix) => {
-    //     //                 this.store.setPrefix(prefix, prefixes[prefix]);
-    //     //             });
+//     //     //             Object.keys(prefixes).forEach((prefix) => {
+//     //     //                 this.store.setPrefix(prefix, prefixes[prefix]);
+//     //     //             });
 
-    this.connect(eventsUrl);
-    this.reconnectOnWake();
+//     this.connect(eventsUrl);
+//     this.reconnectOnWake();
 
-    //     staticGraphUrls.forEach((url) => {
-    //         fetch(url).then((response) => response.text())
-    //             .then((body) => {
-    //                 // parse with n3, add to output
-    //             });
-    //     });
-  }
+//     //     staticGraphUrls.forEach((url) => {
+//     //         fetch(url).then((response) => response.text())
+//     //             .then((body) => {
+//     //                 // parse with n3, add to output
+//     //             });
+//     //     });
+//   }
 
-  _vacuum() {
-    // workaround for the growing _ids map
-    this.store = new Store(this.store.getQuads(null, null, null, null));
-  }
+//   _vacuum() {
+//     // workaround for the growing _ids map
+//     this.store = new Store(this.store.getQuads(null, null, null, null));
+//   }
 
-  reconnectOnWake() {
-    // it's not this, which fires on every mouse-in on a browser window, and doesn't seem to work for screen-turned-back-on
-    //window.addEventListener('focus', function() { this.connect(eventsUrl); }.bind(this));
-  }
+//   reconnectOnWake() {
+//     // it's not this, which fires on every mouse-in on a browser window, and doesn't seem to work for screen-turned-back-on
+//     //window.addEventListener('focus', function() { this.connect(eventsUrl); }.bind(this));
+//   }
 
-  connect(eventsUrl: string) {
-    // need to exit here if this obj has been replaced
+//   connect(eventsUrl: string) {
+//     // need to exit here if this obj has been replaced
 
-    this.onStatus("start connect...");
-    this.close();
-    if (this.events && this.events.readyState != EventSource.CLOSED) {
-      this.onStatus("zombie");
-      throw new Error("zombie eventsource");
-    }
+//     this.onStatus("start connect...");
+//     this.close();
+//     if (this.events && this.events.readyState != EventSource.CLOSED) {
+//       this.onStatus("zombie");
+//       throw new Error("zombie eventsource");
+//     }
 
-    this.events = new EventSource(eventsUrl);
+//     this.events = new EventSource(eventsUrl);
 
-    this.events.addEventListener("error", ev => {
-      // todo: this is piling up tons of retries and eventually multiple connections
-      // this.testEventUrl(eventsUrl);
-      this.onStatus("connection lost- retrying");
-      setTimeout(() => {
-        requestAnimationFrame(() => {
-          this.connect(eventsUrl);
-        });
-      }, 3000);
-    });
+//     this.events.addEventListener("error", ev => {
+//       // todo: this is piling up tons of retries and eventually multiple connections
+//       // this.testEventUrl(eventsUrl);
+//       this.onStatus("connection lost- retrying");
+//       setTimeout(() => {
+//         requestAnimationFrame(() => {
+//           this.connect(eventsUrl);
+//         });
+//       }, 3000);
+//     });
 
-    this.events.addEventListener("fullGraph", async ev => {
-      this.onStatus("sync- full graph update");
-      await this.replaceFullGraph((ev as MessageEvent).data);
-      this.onStatus(`synced ${this.store.size}`);
-      this.onGraphChanged();
-    });
+//     this.events.addEventListener("fullGraph", async ev => {
+//       this.onStatus("sync- full graph update");
+//       await this.replaceFullGraph((ev as MessageEvent).data);
+//       this.onStatus(`synced ${this.store.size}`);
+//       this.onGraphChanged();
+//     });
 
-    this.events.addEventListener("patch", async ev => {
-      this.onStatus("sync- updating");
-      await this.patchGraph((ev as MessageEvent).data);
-      this.onStatus(`synced ${this.store.size}`);
-      this.onGraphChanged();
-    });
-    this.onStatus("connecting...");
-  }
+//     this.events.addEventListener("patch", async ev => {
+//       this.onStatus("sync- updating");
+//       await this.patchGraph((ev as MessageEvent).data);
+//       this.onStatus(`synced ${this.store.size}`);
+//       this.onGraphChanged();
+//     });
+//     this.onStatus("connecting...");
+//   }
 
-  // these need some locks
-  async replaceFullGraph(jsonLdText: string) {
-    this.store = new Store();
-    await eachJsonLdQuad(
-      JSON.parse(jsonLdText),
-      this.store.addQuad.bind(this.store)
-    );
-  }
+//   // these need some locks
+//   async replaceFullGraph(jsonLdText: string) {
+//     this.store = new Store();
+//     await eachJsonLdQuad(
+//       JSON.parse(jsonLdText),
+//       this.store.addQuad.bind(this.store)
+//     );
+//   }
 
-  async patchGraph(patchJson: string) {
-    var patch = JSON.parse(patchJson).patch;
+//   async patchGraph(patchJson: string) {
+//     var patch = JSON.parse(patchJson).patch;
 
-    await eachJsonLdQuad(patch.deletes, quad => {
-      this.store.removeQuad(quad);
-      this._deletedCount++;
-    });
-    await eachJsonLdQuad(patch.adds, this.store.addQuad.bind(this.store));
+//     await eachJsonLdQuad(patch.deletes, quad => {
+//       this.store.removeQuad(quad);
+//       this._deletedCount++;
+//     });
+//     await eachJsonLdQuad(patch.adds, this.store.addQuad.bind(this.store));
 
-    if (this._deletedCount > 100) {
-      this._vacuum();
-      this._deletedCount = 0;
-    }
-  }
+//     if (this._deletedCount > 100) {
+//       this._vacuum();
+//       this._deletedCount = 0;
+//     }
+//   }
 
-  close() {
-    if (this.events) {
-      this.events.close();
-    }
-  }
+//   close() {
+//     if (this.events) {
+//       this.events.close();
+//     }
+//   }
 
-  async testEventUrl(eventsUrl: string): Promise<void> {
-    return new Promise<void>((resolve, reject) => {
-      this.onStatus("testing connection");
-      fetch(eventsUrl, {
-        method: "HEAD",
-        credentials: "include"
-      })
-        .then(value => {
-          if (value.status == 403) {
-            reject();
-            return;
-          }
-          resolve();
-        })
-        .catch(err => {
-          reject();
-        });
-    });
-  }
-}
+//   async testEventUrl(eventsUrl: string): Promise<void> {
+//     return new Promise<void>((resolve, reject) => {
+//       this.onStatus("testing connection");
+//       fetch(eventsUrl, {
+//         method: "HEAD",
+//         credentials: "include"
+//       })
+//         .then(value => {
+//           if (value.status == 403) {
+//             reject();
+//             return;
+//           }
+//           resolve();
+//         })
+//         .catch(err => {
+//           reject();
+//         });
+//     });
+//   }
+// }