@holographxyz/cli
Version:
Holograph operator CLI
92 lines (91 loc) • 3.14 kB
JavaScript
;
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;