UNPKG

@valueflows/vf-graphql-holochain

Version:

GraphQL schema bindings for the Holochain implementation of ValueFlows

52 lines 9.24 kB
/** * Resolvers for ResourceSpecification fields * * @package: HoloREA * @since: 2019-08-27 */ import { DEFAULT_VF_MODULES, VfModule } from '../types.js'; import { mapZomeFn } from '../connection.js'; export default (enabledVFModules = DEFAULT_VF_MODULES, dnaConfig, conductorUri) => { const hasHistory = -1 !== enabledVFModules.indexOf(VfModule.History); const hasMeasurement = -1 !== enabledVFModules.indexOf(VfModule.Measurement); const hasIntent = -1 !== enabledVFModules.indexOf(VfModule.Intent); const hasCommitment = -1 !== enabledVFModules.indexOf(VfModule.Commitment); const hasObservation = -1 !== enabledVFModules.indexOf(VfModule.Observation); const readRevision = mapZomeFn(dnaConfig, conductorUri, 'specification', 'resource_specification', 'get_revision'); const queryResources = mapZomeFn(dnaConfig, conductorUri, 'observation', 'economic_resource_index', 'query_economic_resources'); const readUnit = mapZomeFn(dnaConfig, conductorUri, 'specification', 'unit', 'get_unit'); return Object.assign((hasObservation ? { conformingResources: async (record) => { return await queryResources({ params: { conformsTo: record.id } }); }, economicEvents: () => { throw new Error('resolver unimplemented'); }, } : {}), (hasCommitment ? { commitments: () => { throw new Error('resolver unimplemented'); }, } : {}), (hasIntent ? { intents: () => { throw new Error('resolver unimplemented'); }, } : {}), (hasMeasurement ? { defaultUnitOfResource: async (record) => { if (!record.defaultUnitOfResource) { return null; } return (await readUnit({ id: record.defaultUnitOfResource })).unit; }, defaultUnitOfEffort: async (record) => { if (!record.defaultUnitOfEffort) { return null; } return (await readUnit({ id: record.defaultUnitOfEffort })).unit; }, } : {}), (hasHistory ? { revision: async (record, args) => { return (await readRevision(args)).resourceSpecification; }, } : {})); }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2VTcGVjaWZpY2F0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vcmVzb2x2ZXJzL3Jlc291cmNlU3BlY2lmaWNhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUVILE9BQU8sRUFBaUIsa0JBQWtCLEVBQUUsUUFBUSxFQUEyQyxNQUFNLGFBQWEsQ0FBQTtBQUNsSCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFZNUMsZUFBZSxDQUFDLG1CQUErQixrQkFBa0IsRUFBRSxTQUF3QixFQUFFLFlBQW9CLEVBQUUsRUFBRTtJQUNuSCxNQUFNLFVBQVUsR0FBRyxDQUFDLENBQUMsS0FBSyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3BFLE1BQU0sY0FBYyxHQUFHLENBQUMsQ0FBQyxLQUFLLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUE7SUFDNUUsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFDLEtBQUssZ0JBQWdCLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUNsRSxNQUFNLGFBQWEsR0FBRyxDQUFDLENBQUMsS0FBSyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFBO0lBQzFFLE1BQU0sY0FBYyxHQUFHLENBQUMsQ0FBQyxLQUFLLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUE7SUFFNUUsTUFBTSxZQUFZLEdBQUcsU0FBUyxDQUE0QyxTQUFTLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSx3QkFBd0IsRUFBRSxjQUFjLENBQUMsQ0FBQTtJQUM3SixNQUFNLGNBQWMsR0FBRyxTQUFTLENBQTBELFNBQVMsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLHlCQUF5QixFQUFFLDBCQUEwQixDQUFDLENBQUE7SUFDeEwsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFxQixTQUFTLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUE7SUFFNUcsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUNsQixDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7UUFDaEIsbUJBQW1CLEVBQUUsS0FBSyxFQUFFLE1BQTZCLEVBQXVDLEVBQUU7WUFDaEcsT0FBTyxNQUFNLGNBQWMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBQ3BFLENBQUM7UUFDRCxjQUFjLEVBQUUsR0FBRyxFQUFFO1lBQ25CLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQTtRQUMzQyxDQUFDO0tBQ0YsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQ1AsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1FBQ2YsV0FBVyxFQUFFLEdBQUcsRUFBRTtZQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUE7UUFDM0MsQ0FBQztLQUNGLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUNQLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUNYLE9BQU8sRUFBRSxHQUFHLEVBQUU7WUFDWixNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUE7UUFDM0MsQ0FBQztLQUNGLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUNQLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztRQUNoQixxQkFBcUIsRUFBRSxLQUFLLEVBQUUsTUFBd0QsRUFBRSxFQUFFO1lBQ3hGLElBQUksQ0FBQyxNQUFNLENBQUMscUJBQXFCLEVBQUU7Z0JBQ2pDLE9BQU8sSUFBSSxDQUFBO2FBQ1o7WUFDRCxPQUFPLENBQUMsTUFBTSxRQUFRLENBQUMsRUFBRSxFQUFFLEVBQUUsTUFBTSxDQUFDLHFCQUFxQixFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQTtRQUNwRSxDQUFDO1FBQ0QsbUJBQW1CLEVBQUUsS0FBSyxFQUFFLE1BQXNELEVBQXdCLEVBQUU7WUFDMUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRTtnQkFDL0IsT0FBTyxJQUFJLENBQUE7YUFDWjtZQUNELE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBO1FBQ2xFLENBQUM7S0FDRixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFDUCxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDWixRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQTZCLEVBQUUsSUFBMkMsRUFBa0MsRUFBRTtZQUM3SCxPQUFPLENBQUMsTUFBTSxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQTtRQUN6RCxDQUFDO0tBQ0YsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQ1IsQ0FBQTtBQUNILENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUmVzb2x2ZXJzIGZvciBSZXNvdXJjZVNwZWNpZmljYXRpb24gZmllbGRzXG4gKlxuICogQHBhY2thZ2U6IEhvbG9SRUFcbiAqIEBzaW5jZTogICAyMDE5LTA4LTI3XG4gKi9cblxuaW1wb3J0IHsgRE5BSWRNYXBwaW5ncywgREVGQVVMVF9WRl9NT0RVTEVTLCBWZk1vZHVsZSwgQnlJZCwgQnlSZXZpc2lvbiwgQWRkcmVzc2FibGVJZGVudGlmaWVyIH0gZnJvbSAnLi4vdHlwZXMuanMnXG5pbXBvcnQgeyBtYXBab21lRm4gfSBmcm9tICcuLi9jb25uZWN0aW9uLmpzJ1xuXG5pbXBvcnQge1xuICBNYXliZSxcbiAgRWNvbm9taWNSZXNvdXJjZUNvbm5lY3Rpb24sXG4gIFJlc291cmNlU3BlY2lmaWNhdGlvbixcbiAgUmVzb3VyY2VTcGVjaWZpY2F0aW9uUmVzcG9uc2UsXG4gIFVuaXQsXG4gIFVuaXRSZXNwb25zZSxcbn0gZnJvbSAnQHZhbHVlZmxvd3MvdmYtZ3JhcGhxbCdcbmltcG9ydCB7IEVjb25vbWljUmVzb3VyY2VTZWFyY2hJbnB1dCB9IGZyb20gJy4vem9tZVNlYXJjaElucHV0VHlwZXMuanMnXG5cbmV4cG9ydCBkZWZhdWx0IChlbmFibGVkVkZNb2R1bGVzOiBWZk1vZHVsZVtdID0gREVGQVVMVF9WRl9NT0RVTEVTLCBkbmFDb25maWc6IEROQUlkTWFwcGluZ3MsIGNvbmR1Y3RvclVyaTogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IGhhc0hpc3RvcnkgPSAtMSAhPT0gZW5hYmxlZFZGTW9kdWxlcy5pbmRleE9mKFZmTW9kdWxlLkhpc3RvcnkpXG4gIGNvbnN0IGhhc01lYXN1cmVtZW50ID0gLTEgIT09IGVuYWJsZWRWRk1vZHVsZXMuaW5kZXhPZihWZk1vZHVsZS5NZWFzdXJlbWVudClcbiAgY29uc3QgaGFzSW50ZW50ID0gLTEgIT09IGVuYWJsZWRWRk1vZHVsZXMuaW5kZXhPZihWZk1vZHVsZS5JbnRlbnQpXG4gIGNvbnN0IGhhc0NvbW1pdG1lbnQgPSAtMSAhPT0gZW5hYmxlZFZGTW9kdWxlcy5pbmRleE9mKFZmTW9kdWxlLkNvbW1pdG1lbnQpXG4gIGNvbnN0IGhhc09ic2VydmF0aW9uID0gLTEgIT09IGVuYWJsZWRWRk1vZHVsZXMuaW5kZXhPZihWZk1vZHVsZS5PYnNlcnZhdGlvbilcblxuICBjb25zdCByZWFkUmV2aXNpb24gPSBtYXBab21lRm48QnlSZXZpc2lvbiwgUmVzb3VyY2VTcGVjaWZpY2F0aW9uUmVzcG9uc2U+KGRuYUNvbmZpZywgY29uZHVjdG9yVXJpLCAnc3BlY2lmaWNhdGlvbicsICdyZXNvdXJjZV9zcGVjaWZpY2F0aW9uJywgJ2dldF9yZXZpc2lvbicpXG4gIGNvbnN0IHF1ZXJ5UmVzb3VyY2VzID0gbWFwWm9tZUZuPEVjb25vbWljUmVzb3VyY2VTZWFyY2hJbnB1dCwgRWNvbm9taWNSZXNvdXJjZUNvbm5lY3Rpb24+KGRuYUNvbmZpZywgY29uZHVjdG9yVXJpLCAnb2JzZXJ2YXRpb24nLCAnZWNvbm9taWNfcmVzb3VyY2VfaW5kZXgnLCAncXVlcnlfZWNvbm9taWNfcmVzb3VyY2VzJylcbiAgY29uc3QgcmVhZFVuaXQgPSBtYXBab21lRm48QnlJZCwgVW5pdFJlc3BvbnNlPihkbmFDb25maWcsIGNvbmR1Y3RvclVyaSwgJ3NwZWNpZmljYXRpb24nLCAndW5pdCcsICdnZXRfdW5pdCcpXG5cbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24oXG4gICAgKGhhc09ic2VydmF0aW9uID8ge1xuICAgICAgY29uZm9ybWluZ1Jlc291cmNlczogYXN5bmMgKHJlY29yZDogUmVzb3VyY2VTcGVjaWZpY2F0aW9uKTogUHJvbWlzZTxFY29ub21pY1Jlc291cmNlQ29ubmVjdGlvbj4gPT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgcXVlcnlSZXNvdXJjZXMoeyBwYXJhbXM6IHsgY29uZm9ybXNUbzogcmVjb3JkLmlkIH0gfSlcbiAgICAgIH0sXG4gICAgICBlY29ub21pY0V2ZW50czogKCkgPT4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Jlc29sdmVyIHVuaW1wbGVtZW50ZWQnKVxuICAgICAgfSxcbiAgICB9IDoge30pLFxuICAgIChoYXNDb21taXRtZW50ID8ge1xuICAgICAgY29tbWl0bWVudHM6ICgpID0+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdyZXNvbHZlciB1bmltcGxlbWVudGVkJylcbiAgICAgIH0sXG4gICAgfSA6IHt9KSxcbiAgICAoaGFzSW50ZW50ID8ge1xuICAgICAgaW50ZW50czogKCkgPT4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Jlc29sdmVyIHVuaW1wbGVtZW50ZWQnKVxuICAgICAgfSxcbiAgICB9IDoge30pLFxuICAgIChoYXNNZWFzdXJlbWVudCA/IHtcbiAgICAgIGRlZmF1bHRVbml0T2ZSZXNvdXJjZTogYXN5bmMgKHJlY29yZDogeyBkZWZhdWx0VW5pdE9mUmVzb3VyY2U6IEFkZHJlc3NhYmxlSWRlbnRpZmllciB9KSA9PiB7XG4gICAgICAgIGlmICghcmVjb3JkLmRlZmF1bHRVbml0T2ZSZXNvdXJjZSkge1xuICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChhd2FpdCByZWFkVW5pdCh7IGlkOiByZWNvcmQuZGVmYXVsdFVuaXRPZlJlc291cmNlIH0pKS51bml0XG4gICAgICB9LFxuICAgICAgZGVmYXVsdFVuaXRPZkVmZm9ydDogYXN5bmMgKHJlY29yZDogeyBkZWZhdWx0VW5pdE9mRWZmb3J0OiBBZGRyZXNzYWJsZUlkZW50aWZpZXIgfSk6IFByb21pc2U8TWF5YmU8VW5pdD4+ID0+IHtcbiAgICAgICAgaWYgKCFyZWNvcmQuZGVmYXVsdFVuaXRPZkVmZm9ydCkge1xuICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChhd2FpdCByZWFkVW5pdCh7IGlkOiByZWNvcmQuZGVmYXVsdFVuaXRPZkVmZm9ydCB9KSkudW5pdFxuICAgICAgfSxcbiAgICB9IDoge30pLFxuICAgIChoYXNIaXN0b3J5ID8ge1xuICAgICAgcmV2aXNpb246IGFzeW5jIChyZWNvcmQ6IFJlc291cmNlU3BlY2lmaWNhdGlvbiwgYXJnczogeyByZXZpc2lvbklkOiBBZGRyZXNzYWJsZUlkZW50aWZpZXIgfSk6IFByb21pc2U8UmVzb3VyY2VTcGVjaWZpY2F0aW9uPiA9PiB7XG4gICAgICAgIHJldHVybiAoYXdhaXQgcmVhZFJldmlzaW9uKGFyZ3MpKS5yZXNvdXJjZVNwZWNpZmljYXRpb25cbiAgICAgIH0sXG4gICAgfSA6IHt9KSxcbiAgKVxufVxuIl19