Open
Description
I was thinking this would be a good time make API changes if we want. We can maintain an external layer that presents an 'oada-cache' style API ... with the hope that a new API is cleaner (more typeable) and eventually wins.
Here is an example of the API that comes to mind. This is driven by my use case in 'oada-jobs'. Would love to have a discussion on this. If you are agreeable, I would be happy to help make it so.
import { connect, /* LRU */ } from '@oada/client'
// For now just WS, but could have others on day
const conn = new OadaWS("example.oada.com");
/* Maybe "wrap" in a cache layer?
* conn = LRU(conn);
*/
// Note: type annotation is just for example clarity
// Note: oada1, oada2, ... live at the same time and they
// need a way store the token separately
const oada1: OadaClient = conn.connect(token1);
const oada2: OadaClient = conn.connect(token2);
/*
* all of these use the same WS socket from above but are
* authed with the correct token
*/
oada1.get(path) // Return type? Should leverage @awlayton's oada-types as possible
oada2.put(path, body, options) // Return type? Should leverage @awlayton's oada-types as possible
oada1.watch(path).on('all|new|edit|delete', (change: OadaChane, oada: OadaClient) => {
// where `oada` is the OadaClient that recieved the change
})
EDIT: Removing clone
and setToken
as they are not needed. We will make conn.connect()
"cheap" instead.
Metadata
Metadata
Assignees
Labels
No labels