@alleyway/add-tradingview-alerts-tool
Version:
Add TradingView Alerts in bulk
86 lines (75 loc) • 2.15 kB
text/typescript
import { ClassificationType, IBaseSymbol } from "./interfaces.js"
export class MasterSymbol implements IBaseSymbol {
source: string
id: string
prefix: string
ticker: string
instrument: string
quoteAsset: string
classification: ClassificationType
raw: object
constructor(
raw: object,
source: string,
instrument: string,
quoteAsset: string,
id?: string,
classification?: ClassificationType
) {
this.raw = raw
this.id = id || `${source.toUpperCase()}:${instrument}${quoteAsset}`
const [prefix, ticker] = this.id.split(":")
this.prefix = prefix
this.ticker = ticker
this.source = source.toUpperCase()
this.quoteAsset = quoteAsset
this.instrument = instrument
this.classification = classification || "SPOT"
}
}
export class NoInputFoundError extends Error {
constructor(message: string) {
super(message)
}
}
export class SelectionError extends Error {
public _configName: string
public _pageUrl: string
_needle: string
_haystack: string[]
constructor(needle: string, haystack: string[]) {
super(`Unable to partial match '${needle}' from the following options:\n${haystack.join("\n")}`)
Object.setPrototypeOf(this, SelectionError.prototype)
this._needle = needle
this._haystack = haystack
}
set configName(value: string) {
this._configName = value
}
set pageUrl(value: string) {
this._pageUrl = value
}
}
export class InvalidSymbolError extends Error {
public symbol: string
constructor() {
super(`Invalid Symbol`)
Object.setPrototypeOf(this, InvalidSymbolError.prototype)
}
}
export class AddAlertInvocationError extends Error {
constructor() {
super("Unable to bring up alert dialog (system error)")
Object.setPrototypeOf(this, AddAlertInvocationError.prototype)
}
}
export class ErrorWithScreenShot extends Error {
public filenameSearch: RegExp | string
public title: string
constructor(message, filenameSearch, title?) {
super(message)
this.filenameSearch = filenameSearch
this.title = title
Object.setPrototypeOf(this, ErrorWithScreenShot.prototype)
}
}