remove omitBy

This commit is contained in:
Mayukha Vadari
2021-10-18 16:02:02 -04:00
parent 3134dc112f
commit 9bf7df868e
3 changed files with 54 additions and 33 deletions

View File

@@ -62,29 +62,26 @@ function getAgent(url: string, config: ConnectionOptions): Agent | undefined {
const parsedURL = new URL(url)
const parsedProxyURL = new URL(config.proxy)
const proxyOptions = _.omitBy(
{
secureEndpoint: parsedURL.protocol === 'wss:',
secureProxy: parsedProxyURL.protocol === 'https:',
auth: config.proxyAuthorization,
ca: config.trustedCertificates,
key: config.key,
passphrase: config.passphrase,
cert: config.certificate,
href: parsedProxyURL.href,
origin: parsedProxyURL.origin,
protocol: parsedProxyURL.protocol,
username: parsedProxyURL.username,
password: parsedProxyURL.password,
host: parsedProxyURL.host,
hostname: parsedProxyURL.hostname,
port: parsedProxyURL.port,
pathname: parsedProxyURL.pathname,
search: parsedProxyURL.search,
hash: parsedProxyURL.hash,
},
(value) => value == null,
)
const proxyOptions = {
secureEndpoint: parsedURL.protocol === 'wss:',
secureProxy: parsedProxyURL.protocol === 'https:',
auth: config.proxyAuthorization,
ca: config.trustedCertificates,
key: config.key,
passphrase: config.passphrase,
cert: config.certificate,
href: parsedProxyURL.href,
origin: parsedProxyURL.origin,
protocol: parsedProxyURL.protocol,
username: parsedProxyURL.username,
password: parsedProxyURL.password,
host: parsedProxyURL.host,
hostname: parsedProxyURL.hostname,
port: parsedProxyURL.port,
pathname: parsedProxyURL.pathname,
search: parsedProxyURL.search,
hash: parsedProxyURL.hash,
}
let HttpsProxyAgent: new (opt: typeof proxyOptions) => Agent
try {
@@ -118,15 +115,12 @@ function createWebSocket(
const base64 = Buffer.from(config.authorization).toString('base64')
options.headers = { Authorization: `Basic ${base64}` }
}
const optionsOverrides = _.omitBy(
{
ca: config.trustedCertificates,
key: config.key,
passphrase: config.passphrase,
cert: config.certificate,
},
(value) => value == null,
)
const optionsOverrides = {
ca: config.trustedCertificates,
key: config.key,
passphrase: config.passphrase,
cert: config.certificate,
}
const websocketOptions = { ...options, ...optionsOverrides }
const websocket = new WebSocket(url, websocketOptions)
/*

View File

@@ -166,9 +166,21 @@ export function validate(transaction: Record<string, unknown>): void {
if (
!_.isEqual(
decode(encode(tx)),
_.omitBy(tx, (value) => value == null),
omitBy(tx, (value) => value == null),
)
) {
throw new ValidationError(`Invalid Transaction: ${tx.TransactionType}`)
}
}
function omitBy(
obj: Record<string, unknown>,
fn: (value: unknown) => unknown,
): Record<string, unknown> {
return (
Object.keys(obj)
.filter((key) => !fn(obj[key]))
// eslint-disable-next-line no-return-assign -- it's fine
.reduce((acc, key) => ((acc[key] = obj[key]), acc), {})
)
}

View File

@@ -0,0 +1,15 @@
// NOTE: This should not be exported at the top level
export function omitBy(
obj: Record<string, unknown>,
fn: (unknown, string) => unknown,
): Record<string, unknown> {
return (
Object.keys(obj)
.filter((key) => !fn(obj[key], key))
// eslint-disable-next-line no-return-assign -- it's fine
.reduce((acc, key) => ((acc[key] = obj[key]), acc), {})
)
}
export function groupBy(): void {}