1
0
mirror of https://github.com/oceanprotocol-archive/squid-js.git synced 2024-02-02 15:31:51 +01:00
squid-js/src/utils/ConversionTypeHelpers.ts

36 lines
1.5 KiB
TypeScript
Raw Normal View History

2019-03-14 21:28:51 +01:00
import { Logger } from "./Logger"
// Ox transformer
export const zeroX = (input: string) => zeroXTransformer(input, true)
export const noZeroX = (input: string) => zeroXTransformer(input, false)
export function zeroXTransformer(input: string = "", zeroOutput: boolean) {
const {valid, output} = inputMatch(input, /^(?:0x)*([a-f0-9]+)$/i, "zeroXTransformer")
return (zeroOutput && valid ? "0x" : "") + output
}
// did:op: transformer
export const didPrefixed = (input: string) => didTransformer(input, true)
export const noDidPrefixed = (input: string) => didTransformer(input, false)
export function didTransformer(input: string = "", prefixOutput: boolean) {
const {valid, output} = inputMatch(input, /^(?:0x|did:op:)*([a-f0-9]{64})$/i, "didTransformer")
return (prefixOutput && valid ? "did:op:" : "") + output
}
// 0x + did:op: transformer
export const didZeroX = (input: string) => zeroX(didTransformer(input, false))
// Shared functions
function inputMatch(input: string, regexp: RegExp, conversorName: string): {valid: boolean, output: string} {
if (typeof input !== "string") {
Logger.debug("Not input string:")
Logger.debug(input)
2019-03-14 21:28:51 +01:00
throw new Error(`[${conversorName}] Expected string, input type: ${typeof input}`)
}
2019-03-14 21:28:51 +01:00
const match = input.match(regexp)
if (!match) {
Logger.warn(`[${conversorName}] Input transformation failed.`)
return {valid: false, output: input}
}
2019-03-14 21:28:51 +01:00
return {valid: true, output: match[1]}
}