@leosprograms/vf-graphql-holochain
Version:
GraphQL schema bindings for the Holochain implementation of ValueFlows
45 lines • 8.81 kB
JavaScript
/**
* Resolvers for Proposal fields
*
* @package: HoloREA
* @since: 2019-08-27
*/
import { DEFAULT_VF_MODULES, VfModule } from '../types.js';
import { mapZomeFn, extractEdges } from '../connection.js';
import agentQueries from '../queries/agent.js';
const extractProposedTo = (data) => data.proposedTo;
const extractProposedIntent = (data) => data.proposedIntent;
export default (enabledVFModules = DEFAULT_VF_MODULES, dnaConfig, conductorUri) => {
const hasHistory = -1 !== enabledVFModules.indexOf(VfModule.History);
const hasAgent = -1 !== enabledVFModules.indexOf(VfModule.Agent);
const hasIntent = -1 !== enabledVFModules.indexOf(VfModule.Intent);
const readRevision = mapZomeFn(dnaConfig, conductorUri, 'combined', 'proposal', 'get_revision');
const readProposedTo = mapZomeFn(dnaConfig, conductorUri, 'combined', 'proposed_to', 'get_proposed_to');
const queryProposedIntents = mapZomeFn(dnaConfig, conductorUri, 'combined', 'indexing', 'query_proposed_intents');
const readAgent = agentQueries(dnaConfig, conductorUri)['agent'];
return Object.assign({
publishes: async (record) => {
const results = await queryProposedIntents({ params: { publishedIn: record.id } });
return extractEdges(results);
}
}, (hasAgent ? {
publishedTo: async (record) => {
return (await Promise.all((record.publishedTo || []).map((address) => readProposedTo({ address })))).map(extractProposedTo);
},
inScopeOf: async (record) => {
return (await Promise.all((record.inScopeOf || []).map((address) => readAgent(record, { address }))));
},
} : {}), (hasIntent ? {
primaryIntents: () => {
throw new Error('resolver unimplemented');
},
reciprocalIntents: () => {
throw new Error('resolver unimplemented');
},
} : {}), (hasHistory ? {
revision: async (record, args) => {
return (await readRevision(args)).proposal;
},
} : {}));
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcG9zYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9yZXNvbHZlcnMvcHJvcG9zYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFFSCxPQUFPLEVBQWlCLGtCQUFrQixFQUFFLFFBQVEsRUFBc0YsTUFBTSxhQUFhLENBQUE7QUFDN0osT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQVcxRCxPQUFPLFlBQVksTUFBTSxxQkFBcUIsQ0FBQTtBQUc5QyxNQUFNLGlCQUFpQixHQUFHLENBQUMsSUFBSSxFQUFjLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFBO0FBQy9ELE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxJQUFJLEVBQWtCLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFBO0FBRTNFLGVBQWUsQ0FBQyxtQkFBK0Isa0JBQWtCLEVBQUUsU0FBd0IsRUFBRSxZQUFvQixFQUFFLEVBQUU7SUFDbkgsTUFBTSxVQUFVLEdBQUcsQ0FBQyxDQUFDLEtBQUssZ0JBQWdCLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUNwRSxNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUMsS0FBSyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ2hFLE1BQU0sU0FBUyxHQUFHLENBQUMsQ0FBQyxLQUFLLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUE7SUFFbEUsTUFBTSxZQUFZLEdBQUcsU0FBUyxDQUErQixTQUFTLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsY0FBYyxDQUFDLENBQUE7SUFDN0gsTUFBTSxjQUFjLEdBQUcsU0FBUyxDQUFpQyxTQUFTLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsaUJBQWlCLENBQUMsQ0FBQTtJQUN2SSxNQUFNLG9CQUFvQixHQUFHLFNBQVMsQ0FBaUMsU0FBUyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLHdCQUF3QixDQUFDLENBQUE7SUFDakosTUFBTSxTQUFTLEdBQUcsWUFBWSxDQUFDLFNBQVMsRUFBRSxZQUFZLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUVoRSxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQ2xCO1FBQ0UsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFnQixFQUE2QixFQUFFO1lBQy9ELE1BQU0sT0FBTyxHQUFHLE1BQU0sb0JBQW9CLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxXQUFXLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQTtZQUNsRixPQUFPLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUM5QixDQUFDO0tBQ0YsRUFDRCxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDVixXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQWdELEVBQXlCLEVBQUU7WUFDN0YsT0FBTyxDQUFDLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFDLEVBQUUsQ0FBQSxjQUFjLENBQUMsRUFBQyxPQUFPLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO1FBQ3pILENBQUM7UUFDRCxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQXFDLEVBQThCLEVBQUU7WUFDckYsT0FBTyxDQUFDLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFDLEVBQUUsQ0FBQSxTQUFTLENBQUMsTUFBTSxFQUFFLEVBQUMsT0FBTyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNuRyxDQUFDO0tBQ0YsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQ1AsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ1gsY0FBYyxFQUFFLEdBQUcsRUFBRTtZQUNuQixNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUE7UUFDM0MsQ0FBQztRQUNELGlCQUFpQixFQUFFLEdBQUcsRUFBRTtZQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUE7UUFDM0MsQ0FBQztLQUNGLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUNQLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUNaLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBZ0IsRUFBRSxJQUEyQyxFQUFxQixFQUFFO1lBQ25HLE9BQU8sQ0FBQyxNQUFNLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQTtRQUM1QyxDQUFDO0tBQ0YsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQ1IsQ0FBQTtBQUNILENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUmVzb2x2ZXJzIGZvciBQcm9wb3NhbCBmaWVsZHNcbiAqXG4gKiBAcGFja2FnZTogSG9sb1JFQVxuICogQHNpbmNlOiAgIDIwMTktMDgtMjdcbiAqL1xuXG5pbXBvcnQgeyBETkFJZE1hcHBpbmdzLCBERUZBVUxUX1ZGX01PRFVMRVMsIFZmTW9kdWxlLCBSZWFkUGFyYW1zLCBCeVJldmlzaW9uLCBQcm9wb3NlZEludGVudEFkZHJlc3MsIEFkZHJlc3NhYmxlSWRlbnRpZmllciwgQWdlbnRBZGRyZXNzIH0gZnJvbSAnLi4vdHlwZXMuanMnXG5pbXBvcnQgeyBtYXBab21lRm4sIGV4dHJhY3RFZGdlcyB9IGZyb20gJy4uL2Nvbm5lY3Rpb24uanMnXG5cbmltcG9ydCB7XG4gIFByb3Bvc2FsLFxuICBQcm9wb3NhbFJlc3BvbnNlLFxuICBQcm9wb3NlZFRvLFxuICBQcm9wb3NlZEludGVudCxcbiAgUHJvcG9zZWRUb1Jlc3BvbnNlLFxuICBQcm9wb3NlZEludGVudFJlc3BvbnNlLFxuICBBY2NvdW50aW5nU2NvcGUsXG59IGZyb20gJ0BsZW9zcHJvZ3JhbXMvdmYtZ3JhcGhxbCdcbmltcG9ydCBhZ2VudFF1ZXJpZXMgZnJvbSAnLi4vcXVlcmllcy9hZ2VudC5qcydcbmltcG9ydCB7IFByb3Bvc2VkSW50ZW50U2VhcmNoSW5wdXQgfSBmcm9tICcuL3pvbWVTZWFyY2hJbnB1dFR5cGVzLmpzJ1xuXG5jb25zdCBleHRyYWN0UHJvcG9zZWRUbyA9IChkYXRhKTogUHJvcG9zZWRUbyA9PiBkYXRhLnByb3Bvc2VkVG9cbmNvbnN0IGV4dHJhY3RQcm9wb3NlZEludGVudCA9IChkYXRhKTogUHJvcG9zZWRJbnRlbnQgPT4gZGF0YS5wcm9wb3NlZEludGVudFxuXG5leHBvcnQgZGVmYXVsdCAoZW5hYmxlZFZGTW9kdWxlczogVmZNb2R1bGVbXSA9IERFRkFVTFRfVkZfTU9EVUxFUywgZG5hQ29uZmlnOiBETkFJZE1hcHBpbmdzLCBjb25kdWN0b3JVcmk6IHN0cmluZykgPT4ge1xuICBjb25zdCBoYXNIaXN0b3J5ID0gLTEgIT09IGVuYWJsZWRWRk1vZHVsZXMuaW5kZXhPZihWZk1vZHVsZS5IaXN0b3J5KVxuICBjb25zdCBoYXNBZ2VudCA9IC0xICE9PSBlbmFibGVkVkZNb2R1bGVzLmluZGV4T2YoVmZNb2R1bGUuQWdlbnQpXG4gIGNvbnN0IGhhc0ludGVudCA9IC0xICE9PSBlbmFibGVkVkZNb2R1bGVzLmluZGV4T2YoVmZNb2R1bGUuSW50ZW50KVxuXG4gIGNvbnN0IHJlYWRSZXZpc2lvbiA9IG1hcFpvbWVGbjxCeVJldmlzaW9uLCBQcm9wb3NhbFJlc3BvbnNlPihkbmFDb25maWcsIGNvbmR1Y3RvclVyaSwgJ2NvbWJpbmVkJywgJ3Byb3Bvc2FsJywgJ2dldF9yZXZpc2lvbicpXG4gIGNvbnN0IHJlYWRQcm9wb3NlZFRvID0gbWFwWm9tZUZuPFJlYWRQYXJhbXMsIFByb3Bvc2VkVG9SZXNwb25zZT4oZG5hQ29uZmlnLCBjb25kdWN0b3JVcmksICdjb21iaW5lZCcsICdwcm9wb3NlZF90bycsICdnZXRfcHJvcG9zZWRfdG8nKVxuICBjb25zdCBxdWVyeVByb3Bvc2VkSW50ZW50cyA9IG1hcFpvbWVGbjxQcm9wb3NlZEludGVudFNlYXJjaElucHV0LCBhbnk+KGRuYUNvbmZpZywgY29uZHVjdG9yVXJpLCAnY29tYmluZWQnLCAnaW5kZXhpbmcnLCAncXVlcnlfcHJvcG9zZWRfaW50ZW50cycpXG4gIGNvbnN0IHJlYWRBZ2VudCA9IGFnZW50UXVlcmllcyhkbmFDb25maWcsIGNvbmR1Y3RvclVyaSlbJ2FnZW50J11cblxuICByZXR1cm4gT2JqZWN0LmFzc2lnbihcbiAgICB7XG4gICAgICBwdWJsaXNoZXM6IGFzeW5jIChyZWNvcmQ6IFByb3Bvc2FsKTogUHJvbWlzZTxQcm9wb3NlZEludGVudFtdPiA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBxdWVyeVByb3Bvc2VkSW50ZW50cyh7IHBhcmFtczogeyBwdWJsaXNoZWRJbjogcmVjb3JkLmlkIH0gfSlcbiAgICAgICAgcmV0dXJuIGV4dHJhY3RFZGdlcyhyZXN1bHRzKVxuICAgICAgfVxuICAgIH0sXG4gICAgKGhhc0FnZW50ID8ge1xuICAgICAgcHVibGlzaGVkVG86IGFzeW5jIChyZWNvcmQ6IHsgcHVibGlzaGVkVG86IEFkZHJlc3NhYmxlSWRlbnRpZmllcltdIH0pOiBQcm9taXNlPFByb3Bvc2VkVG9bXT4gPT4ge1xuICAgICAgICByZXR1cm4gKGF3YWl0IFByb21pc2UuYWxsKChyZWNvcmQucHVibGlzaGVkVG8gfHwgW10pLm1hcCgoYWRkcmVzcyk9PnJlYWRQcm9wb3NlZFRvKHthZGRyZXNzfSkpKSkubWFwKGV4dHJhY3RQcm9wb3NlZFRvKVxuICAgICAgfSxcbiAgICAgIGluU2NvcGVPZjogYXN5bmMgKHJlY29yZDogeyBpblNjb3BlT2Y6IEFnZW50QWRkcmVzc1tdIH0pOiBQcm9taXNlPEFjY291bnRpbmdTY29wZVtdPiA9PiB7XG4gICAgICAgIHJldHVybiAoYXdhaXQgUHJvbWlzZS5hbGwoKHJlY29yZC5pblNjb3BlT2YgfHwgW10pLm1hcCgoYWRkcmVzcyk9PnJlYWRBZ2VudChyZWNvcmQsIHthZGRyZXNzfSkpKSlcbiAgICAgIH0sXG4gICAgfSA6IHt9KSxcbiAgICAoaGFzSW50ZW50ID8ge1xuICAgICAgcHJpbWFyeUludGVudHM6ICgpID0+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdyZXNvbHZlciB1bmltcGxlbWVudGVkJylcbiAgICAgIH0sXG4gICAgICByZWNpcHJvY2FsSW50ZW50czogKCkgPT4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Jlc29sdmVyIHVuaW1wbGVtZW50ZWQnKVxuICAgICAgfSxcbiAgICB9IDoge30pLFxuICAgIChoYXNIaXN0b3J5ID8ge1xuICAgICAgcmV2aXNpb246IGFzeW5jIChyZWNvcmQ6IFByb3Bvc2FsLCBhcmdzOiB7IHJldmlzaW9uSWQ6IEFkZHJlc3NhYmxlSWRlbnRpZmllciB9KTogUHJvbWlzZTxQcm9wb3NhbD4gPT4ge1xuICAgICAgICByZXR1cm4gKGF3YWl0IHJlYWRSZXZpc2lvbihhcmdzKSkucHJvcG9zYWxcbiAgICAgIH0sXG4gICAgfSA6IHt9KSxcbiAgKVxufVxuIl19