@valueflows/vf-graphql-holochain
Version:
GraphQL schema bindings for the Holochain implementation of ValueFlows
57 lines • 5.95 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;
}
// function to remove entry from the store
export function removeEntryFromStore(hash) {
if (!allowCaching) {
return;
}
if (entryLookup[hash]) {
delete entryLookup[hash];
}
}
// 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRW5ELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQztBQUUxQixtQ0FBbUM7QUFDbkMsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLFlBQVksQ0FBc0IsRUFBRSxDQUFDLENBQUM7QUFFakUscURBQXFEO0FBQ3JELE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxJQUFZO0lBQzFDLE9BQU8sV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQztBQUNyQyxDQUFDO0FBRUQscUNBQXFDO0FBQ3JDLE1BQU0sVUFBVSxlQUFlLENBQUMsSUFBWSxFQUFFLEtBQVU7SUFDcEQsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ2hCLE9BQU87SUFDWCxDQUFDO0lBQ0QsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUM5QixDQUFDO0FBRUQsMENBQTBDO0FBQzFDLE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxJQUFZO0lBQzdDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNoQixPQUFPO0lBQ1gsQ0FBQztJQUNELElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDcEIsT0FBTyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0IsQ0FBQztBQUNMLENBQUM7QUFFRCxpREFBaUQ7QUFDakQsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsWUFBWSxDQUE0RCxFQUFFLENBQUMsQ0FBQztBQUV0SCw2Q0FBNkM7QUFDN0MsTUFBTSxVQUFVLG1CQUFtQixDQUFDLElBQVksRUFBRSxhQUFxQjtJQUNuRSxNQUFNLElBQUksR0FBRywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxHQUFHLGFBQWEsR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUM7UUFDN0QsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQzNCLENBQUM7U0FBTSxDQUFDO1FBQ0osT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztBQUNMLENBQUM7QUFFRCwwQkFBMEI7QUFDMUIsTUFBTSxVQUFVLGlCQUFpQixDQUFDLElBQVk7SUFDMUMsTUFBTSxJQUFJLEdBQUcsMEJBQTBCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNQLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO1NBQU0sQ0FBQztRQUNKLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7QUFDTCxDQUFDO0FBRUQscUNBQXFDO0FBQ3JDLE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxVQUFrQixFQUFFLFVBQWtCO0lBQ3ZFLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNoQixPQUFPO0lBQ1gsQ0FBQztJQUNELDBCQUEwQixDQUFDLFVBQVUsQ0FBQyxHQUFHO1FBQ3JDLFVBQVU7UUFDVixTQUFTLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRTtLQUN4QixDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHNpZ25hbE9iamVjdCB9IGZyb20gJ3NpZ25hbC11dGlscy9vYmplY3QnO1xuXG5jb25zdCBhbGxvd0NhY2hpbmcgPSB0cnVlO1xuXG4vLyByZWFjdGl2ZSBlbnRyeSBsb29rdXAgZm9yIGhhc2hlc1xuZXhwb3J0IGNvbnN0IGVudHJ5TG9va3VwID0gc2lnbmFsT2JqZWN0PFJlY29yZDxzdHJpbmcsIGFueT4+KHt9KTtcblxuLy8gZnVuY3Rpb24gdG8gcmV0dXJuIGVudHJ5IGlmIGl0IGV4aXN0cyBpbiB0aGUgc3RvcmVcbmV4cG9ydCBmdW5jdGlvbiBnZXRFbnRyeUZyb21TdG9yZShoYXNoOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZW50cnlMb29rdXBbaGFzaF0gPz8gbnVsbDtcbn1cblxuLy8gZnVuY3Rpb24gdG8gYWRkIGVudHJ5IHRvIHRoZSBzdG9yZVxuZXhwb3J0IGZ1bmN0aW9uIGFkZEVudHJ5VG9TdG9yZShoYXNoOiBzdHJpbmcsIGVudHJ5OiBhbnkpIHtcbiAgICBpZiAoIWFsbG93Q2FjaGluZykge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGVudHJ5TG9va3VwW2hhc2hdID0gZW50cnk7XG59XG5cbi8vIGZ1bmN0aW9uIHRvIHJlbW92ZSBlbnRyeSBmcm9tIHRoZSBzdG9yZVxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUVudHJ5RnJvbVN0b3JlKGhhc2g6IHN0cmluZykge1xuICAgIGlmICghYWxsb3dDYWNoaW5nKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGVudHJ5TG9va3VwW2hhc2hdKSB7XG4gICAgICAgIGRlbGV0ZSBlbnRyeUxvb2t1cFtoYXNoXTtcbiAgICB9XG59XG5cbi8vIHJlYWN0aXZlIG1hcCBmb3IgcmVjZW50bHkgZmV0Y2hlZCByZXZpc2lvbiBJRHNcbmV4cG9ydCBjb25zdCByZWNlbnRseUZldGNoZWRSZXZpc2lvbklkcyA9IHNpZ25hbE9iamVjdDxSZWNvcmQ8c3RyaW5nLCB7IHJldmlzaW9uSWQ6IHN0cmluZywgdGltZXN0YW1wOiBudW1iZXIgfT4+KHt9KTtcblxuLy8gZnVuY3Rpb24gdG8gZ2V0IG9yaWdpbmFsIGlkIGZyb20gdGhlIHN0b3JlXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGF0ZXN0UmV2aXNpb25JZChoYXNoOiBzdHJpbmcsIHBhc3NlZFNlY29uZHM6IG51bWJlcikge1xuICAgIGNvbnN0IGl0ZW0gPSByZWNlbnRseUZldGNoZWRSZXZpc2lvbklkc1toYXNoXTtcbiAgICBpZiAoaXRlbSAmJiBpdGVtLnRpbWVzdGFtcCArIHBhc3NlZFNlY29uZHMgKiAxMDAwID4gRGF0ZS5ub3coKSkge1xuICAgICAgICByZXR1cm4gaXRlbS5yZXZpc2lvbklkO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbn1cblxuLy8gZ2V0IHRpbWUgb2YgbGFzdCB1cGRhdGVcbmV4cG9ydCBmdW5jdGlvbiBnZXRMYXN0VXBkYXRlVGltZShoYXNoOiBzdHJpbmcpIHtcbiAgICBjb25zdCBpdGVtID0gcmVjZW50bHlGZXRjaGVkUmV2aXNpb25JZHNbaGFzaF07XG4gICAgaWYgKGl0ZW0pIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0udGltZXN0YW1wO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbn1cblxuLy8gZnVuY3Rpb24gdG8gYWRkL3VwZGF0ZSBvcmlnaW5hbCBpZFxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZUxhdGVzdFJldmlzaW9uKG9yaWdpbmFsSWQ6IHN0cmluZywgcmV2aXNpb25JZDogc3RyaW5nKSB7XG4gICAgaWYgKCFhbGxvd0NhY2hpbmcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICByZWNlbnRseUZldGNoZWRSZXZpc2lvbklkc1tvcmlnaW5hbElkXSA9IHtcbiAgICAgICAgcmV2aXNpb25JZCxcbiAgICAgICAgdGltZXN0YW1wOiBEYXRlLm5vdygpXG4gICAgfTtcbn1cbiJdfQ==