@kadena/kadena-cli
Version:
Kadena CLI tool to interact with the Kadena blockchain (manage keys, transactions, etc.)
39 lines • 1.92 kB
JavaScript
import { HttpResponse, bypass, http } from 'msw';
import { setupServer } from 'msw/node';
import { log } from '../utils/logger.js';
import { testNetworkConfigMock } from './network.js';
const createHandler = ({ network = testNetworkConfigMock, endpoint = 'local', chainId = '1', status = 200, method = 'post', response, printOriginalResponse = false, }) => {
const url = `${network.networkHost}/chainweb/0.0/${network.networkId}/chain/${chainId}/pact/api/v1/${endpoint}`;
return http[method](url, async (info) => {
if (printOriginalResponse === true) {
const result = await fetch(bypass(info.request));
log.info(`MSW bypass response:\n${await result.text()}\n`);
}
if (typeof response === 'string' ||
response === undefined ||
response === null) {
return new HttpResponse(response, { status });
}
// eslint-disable-next-line @typescript-eslint/no-explicit-any
return HttpResponse.json(response, { status });
});
};
const createDynamicHandler = ({ network = testNetworkConfigMock, chainId = '1', endpoint = 'local', method = 'post', getResponse, }) => {
const url = `${network.networkHost}/chainweb/0.0/${network.networkId}/chain/${chainId}/pact/api/v1/${endpoint}`;
return http[method](url, async ({ request }) => {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const response = (await getResponse(request));
return HttpResponse.json(...response);
});
};
const server = setupServer();
const useMswHandler = (options) => {
const handler = createHandler(options);
server.use(handler);
};
const useMswDynamicHandler = (options) => {
const handler = createDynamicHandler(options);
server.use(handler);
};
export { createDynamicHandler, createHandler, server, useMswDynamicHandler, useMswHandler, };
//# sourceMappingURL=server.js.map