Skip to content

Instantly share code, notes, and snippets.

View lgrahl's full-sized avatar
🦁

Lenny lgrahl

🦁
View GitHub Profile

Keybase proof

I hereby claim:

  • I am lgrahl on github.
  • I am lgrahl (https://keybase.io/lgrahl) on keybase.
  • I have a public key whose fingerprint is 3FDB 1486 8A2B 36D6 38F3 C495 F98F BED1 0482 ABA6

To claim this, I am signing this object:

Peer := Initiator OR Responder

High-Level Call Flow

sc = new SaltyRTC(initiator-permanent-public-key, responder-permanent-private-key=None, token-secret-key=None)
pc = new RTCPeerConnection()
sc.connect()
if initiator:
    offer-sdp = await pc.createOffer()
@lgrahl
lgrahl / future.js
Last active July 26, 2018 13:55
asyncio-like Future for JavaScript
/**
* A future similar to Python's asyncio.Future. Allows to resolve or reject
* outside of the executor.
*/
class Future extends Promise {
constructor(executor) {
let resolve, reject;
super((resolve_, reject_) => {
resolve = resolve_;
reject = reject_;
@lgrahl
lgrahl / main.js
Last active July 31, 2018 19:00
Cancellable Promises
function sleep(timeout) {
return new Promise((resolve) => {
setTimeout(() => {
console.log('timeout!');
resolve();
}, timeout);
});
}
class Future extends Promise {
@lgrahl
lgrahl / vite-client-ext.d.ts
Last active December 6, 2021 08:16
Vite Worker Plugin
declare module '*?wrkr' {
export const url: string;
export const create: {
(): Worker;
};
}
declare module '*?srvcwrkr' {
export const url: string;
export const register: {
(
@lgrahl
lgrahl / lock.ts
Created October 28, 2022 12:52
TS/JS Async Lock
/**
* A TypeScript async lock implemented with promise chaining.
*
* Usage:
*
* this._lock.with(async () => {
* await doThing1();
* await doThing2(a);
* });
*/