@web3auth/ws-embed
Version:
Embed script
75 lines (71 loc) • 2.56 kB
JavaScript
;
var _objectSpread = require('@babel/runtime/helpers/objectSpread2');
var constants = require('@toruslabs/constants');
var httpHelpers = require('@toruslabs/http-helpers');
var auth = require('@web3auth/auth');
var loglevel = require('./loglevel.js');
// utility functions
/**
* json-rpc-engine middleware that logs RPC errors and and validates req.method.
*
* @param log - The logging API to use.
* @returns json-rpc-engine middleware function
*/
function createErrorMiddleware() {
return ({
request,
next
}) => {
if (typeof request.method !== "string" || !request.method) {
loglevel.error(`The request 'method' must be a non-empty string.`, request);
throw auth.rpcErrors.invalidRequest({
message: `The request 'method' must be a non-empty string.`,
data: _objectSpread(_objectSpread({}, request || {}), {}, {
cause: `The request 'method' must be a non-empty string.`
})
});
}
return next();
};
}
/**
* Logs a stream disconnection error. Emits an 'error' if given an
* EventEmitter that has listeners for the 'error' event.
*
* @param log - The logging API to use.
* @param remoteLabel - The label of the disconnected stream.
* @param error - The associated error to log.
* @param emitter - The logging API to use.
*/
function logStreamDisconnectWarning(remoteLabel, error, emitter) {
let warningMsg = `Web3Auth: Lost connection to "${remoteLabel}".`;
if (error !== null && error !== void 0 && error.stack) {
warningMsg += `\n${error.stack}`;
}
loglevel.warn(warningMsg);
if (emitter && emitter.listenerCount("error") > 0) {
emitter.emit("error", warningMsg);
}
}
const EMITTED_NOTIFICATIONS = ["eth_subscription" // per eth-json-rpc-filters/subscriptionManager
];
const signerHost = (buildEnv = auth.BUILD_ENV.PRODUCTION) => {
return constants.DASHBOARD_PUBLIC_API_MAP[buildEnv];
};
const fetchProjectConfig = async ({
clientId,
web3AuthNetwork,
buildEnv
}) => {
const url = new URL(`${signerHost(buildEnv)}/api/v2/configuration`);
url.searchParams.append("project_id", clientId);
url.searchParams.append("network", web3AuthNetwork);
if (buildEnv) url.searchParams.append("build_env", buildEnv);
const res = await httpHelpers.get(url.href);
return res;
};
exports.EMITTED_NOTIFICATIONS = EMITTED_NOTIFICATIONS;
exports.createErrorMiddleware = createErrorMiddleware;
exports.fetchProjectConfig = fetchProjectConfig;
exports.logStreamDisconnectWarning = logStreamDisconnectWarning;
exports.signerHost = signerHost;