UNPKG

@valueflows/vf-graphql-holochain

Version:

GraphQL schema bindings for the Holochain implementation of ValueFlows

57 lines 5.95 kB
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==