UNPKG

@holographxyz/cli

Version:
92 lines (91 loc) 3.14 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const graphql_request_1 = require("graphql-request"); class ApiService { logger; client; constructor(baseURL, logger) { this.logger = logger; this.client = new graphql_request_1.GraphQLClient(`${baseURL}/graphql`); } async operatorLogin() { if (!process.env.OPERATOR_API_KEY) { throw new Error('OPERATOR_API_KEY env is required'); } const mutation = (0, graphql_request_1.gql) ` mutation AuthOperator($authOperatorInput: AuthOperatorInput!) { authOperator(authOperatorInput: $authOperatorInput) { accessToken } } `; const data = await this.client.request(mutation, { authOperatorInput: { hash: process.env.OPERATOR_API_KEY, }, }); const JWT = data.authOperator.accessToken; if (typeof JWT === 'undefined') { throw new TypeError('Failed to authorize as an operator'); } this.client.setHeader('authorization', `Bearer ${JWT}`); this.logger.log(`JWT = ${JWT}`); } async getCrossChainTransaction(jobHash) { const query = (0, graphql_request_1.gql) ` query GetCrossChainTx ($jobHash: String!) { crossChainTransaction(jobHash: $jobHash) { id jobType jobHash sourceBlockNumber sourceTx sourceStatus messageBlockNumber messageTx messageStatus operatorBlockNumber operatorTx operatorStatus operatorAddress messageAddress sourceAddress data } } `; const data = await this.client.request(query, { jobHash }); this.logger.debug('found: ', data.crossChainTransaction); return data.crossChainTransaction; } async updateCrossChainTransactionStatus(updateCrossChainTransactionStatusInput) { const mutation = (0, graphql_request_1.gql) ` mutation CreateOrUpdateCrossChainTransaction($createOrUpdateCrossChainTransactionInput: CreateOrUpdateCrossChainTransactionInput!) { createOrUpdateCrossChainTransaction(createOrUpdateCrossChainTransactionInput: $createOrUpdateCrossChainTransactionInput) { id jobType jobHash sourceBlockNumber sourceTx sourceStatus messageBlockNumber messageTx messageStatus operatorBlockNumber operatorTx operatorStatus operatorAddress messageAddress sourceAddress data } } `; const data = await this.client.request(mutation, { createOrUpdateCrossChainTransactionInput: updateCrossChainTransactionStatusInput, }); this.logger.debug('updated to:', data.createOrUpdateCrossChainTransaction); return data.createOrUpdateCrossChainTransaction; } } exports.default = ApiService;