@valueflows/vf-graphql-holochain
Version:
GraphQL schema bindings for the Holochain implementation of ValueFlows
48 lines • 5.18 kB
JavaScript
import { signalObject } from 'signal-utils/object';
const allowCaching = true;
// reactive entry lookup for hashes
export const entryLookup = signalObject({});
// function to return entry if it exists in the store
export function getEntryFromStore(hash) {
return entryLookup[hash] ?? null;
}
// function to add entry to the store
export function addEntryToStore(hash, entry) {
if (!allowCaching) {
return;
}
entryLookup[hash] = entry;
}
// reactive map for recently fetched revision IDs
export const recentlyFetchedRevisionIds = signalObject({});
// function to get original id from the store
export function getLatestRevisionId(hash, passedSeconds) {
const item = recentlyFetchedRevisionIds[hash];
if (item && item.timestamp + passedSeconds * 1000 > Date.now()) {
return item.revisionId;
}
else {
return null;
}
}
// get time of last update
export function getLastUpdateTime(hash) {
const item = recentlyFetchedRevisionIds[hash];
if (item) {
return item.timestamp;
}
else {
return null;
}
}
// function to add/update original id
export function updateLatestRevision(originalId, revisionId) {
if (!allowCaching) {
return;
}
recentlyFetchedRevisionIds[originalId] = {
revisionId,
timestamp: Date.now()
};
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRW5ELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQztBQUUxQixtQ0FBbUM7QUFDbkMsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLFlBQVksQ0FBc0IsRUFBRSxDQUFDLENBQUM7QUFFakUscURBQXFEO0FBQ3JELE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxJQUFZO0lBQzFDLE9BQU8sV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQztBQUNyQyxDQUFDO0FBRUQscUNBQXFDO0FBQ3JDLE1BQU0sVUFBVSxlQUFlLENBQUMsSUFBWSxFQUFFLEtBQVU7SUFDcEQsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ2hCLE9BQU87SUFDWCxDQUFDO0lBQ0QsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUM5QixDQUFDO0FBRUQsaURBQWlEO0FBQ2pELE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLFlBQVksQ0FBNEQsRUFBRSxDQUFDLENBQUM7QUFFdEgsNkNBQTZDO0FBQzdDLE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxJQUFZLEVBQUUsYUFBcUI7SUFDbkUsTUFBTSxJQUFJLEdBQUcsMEJBQTBCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUMsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFNBQVMsR0FBRyxhQUFhLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDO1FBQzdELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUMzQixDQUFDO1NBQU0sQ0FBQztRQUNKLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7QUFDTCxDQUFDO0FBRUQsMEJBQTBCO0FBQzFCLE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxJQUFZO0lBQzFDLE1BQU0sSUFBSSxHQUFHLDBCQUEwQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlDLElBQUksSUFBSSxFQUFFLENBQUM7UUFDUCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztTQUFNLENBQUM7UUFDSixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0FBQ0wsQ0FBQztBQUVELHFDQUFxQztBQUNyQyxNQUFNLFVBQVUsb0JBQW9CLENBQUMsVUFBa0IsRUFBRSxVQUFrQjtJQUN2RSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDaEIsT0FBTztJQUNYLENBQUM7SUFDRCwwQkFBMEIsQ0FBQyxVQUFVLENBQUMsR0FBRztRQUNyQyxVQUFVO1FBQ1YsU0FBUyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUU7S0FDeEIsQ0FBQztBQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzaWduYWxPYmplY3QgfSBmcm9tICdzaWduYWwtdXRpbHMvb2JqZWN0JztcblxuY29uc3QgYWxsb3dDYWNoaW5nID0gdHJ1ZTtcblxuLy8gcmVhY3RpdmUgZW50cnkgbG9va3VwIGZvciBoYXNoZXNcbmV4cG9ydCBjb25zdCBlbnRyeUxvb2t1cCA9IHNpZ25hbE9iamVjdDxSZWNvcmQ8c3RyaW5nLCBhbnk+Pih7fSk7XG5cbi8vIGZ1bmN0aW9uIHRvIHJldHVybiBlbnRyeSBpZiBpdCBleGlzdHMgaW4gdGhlIHN0b3JlXG5leHBvcnQgZnVuY3Rpb24gZ2V0RW50cnlGcm9tU3RvcmUoaGFzaDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGVudHJ5TG9va3VwW2hhc2hdID8/IG51bGw7XG59XG5cbi8vIGZ1bmN0aW9uIHRvIGFkZCBlbnRyeSB0byB0aGUgc3RvcmVcbmV4cG9ydCBmdW5jdGlvbiBhZGRFbnRyeVRvU3RvcmUoaGFzaDogc3RyaW5nLCBlbnRyeTogYW55KSB7XG4gICAgaWYgKCFhbGxvd0NhY2hpbmcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlbnRyeUxvb2t1cFtoYXNoXSA9IGVudHJ5O1xufVxuXG4vLyByZWFjdGl2ZSBtYXAgZm9yIHJlY2VudGx5IGZldGNoZWQgcmV2aXNpb24gSURzXG5leHBvcnQgY29uc3QgcmVjZW50bHlGZXRjaGVkUmV2aXNpb25JZHMgPSBzaWduYWxPYmplY3Q8UmVjb3JkPHN0cmluZywgeyByZXZpc2lvbklkOiBzdHJpbmcsIHRpbWVzdGFtcDogbnVtYmVyIH0+Pih7fSk7XG5cbi8vIGZ1bmN0aW9uIHRvIGdldCBvcmlnaW5hbCBpZCBmcm9tIHRoZSBzdG9yZVxuZXhwb3J0IGZ1bmN0aW9uIGdldExhdGVzdFJldmlzaW9uSWQoaGFzaDogc3RyaW5nLCBwYXNzZWRTZWNvbmRzOiBudW1iZXIpIHtcbiAgICBjb25zdCBpdGVtID0gcmVjZW50bHlGZXRjaGVkUmV2aXNpb25JZHNbaGFzaF07XG4gICAgaWYgKGl0ZW0gJiYgaXRlbS50aW1lc3RhbXAgKyBwYXNzZWRTZWNvbmRzICogMTAwMCA+IERhdGUubm93KCkpIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0ucmV2aXNpb25JZDtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG59XG5cbi8vIGdldCB0aW1lIG9mIGxhc3QgdXBkYXRlXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGFzdFVwZGF0ZVRpbWUoaGFzaDogc3RyaW5nKSB7XG4gICAgY29uc3QgaXRlbSA9IHJlY2VudGx5RmV0Y2hlZFJldmlzaW9uSWRzW2hhc2hdO1xuICAgIGlmIChpdGVtKSB7XG4gICAgICAgIHJldHVybiBpdGVtLnRpbWVzdGFtcDtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG59XG5cbi8vIGZ1bmN0aW9uIHRvIGFkZC91cGRhdGUgb3JpZ2luYWwgaWRcbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVMYXRlc3RSZXZpc2lvbihvcmlnaW5hbElkOiBzdHJpbmcsIHJldmlzaW9uSWQ6IHN0cmluZykge1xuICAgIGlmICghYWxsb3dDYWNoaW5nKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgcmVjZW50bHlGZXRjaGVkUmV2aXNpb25JZHNbb3JpZ2luYWxJZF0gPSB7XG4gICAgICAgIHJldmlzaW9uSWQsXG4gICAgICAgIHRpbWVzdGFtcDogRGF0ZS5ub3coKVxuICAgIH07XG59XG4iXX0=