UNPKG

fmp-node-api

Version:

A comprehensive Node.js wrapper for Financial Modeling Prep API

1 lines 2.47 kB
'use strict';var s=class{static isValidSymbol(t){return !t||typeof t!="string"?false:/^[A-Z]{1,5}$/.test(t)}static isValidCryptoSymbol(t){return !t||typeof t!="string"?false:/^[A-Z]{2,10}(USD|EUR|GBP|JPY|CAD|AUD|CHF|CNY)$/.test(t)}static isValidForexPair(t){return !t||typeof t!="string"?false:/^[A-Z]{3}[A-Z]{3}$/.test(t)}static isValidDate(t){if(!t||typeof t!="string"||!/^\d{4}-\d{2}-\d{2}$/.test(t))return false;let i=new Date(t);return !isNaN(i.getTime())&&i.toISOString().split("T")[0]===t}static isValidDateRange(t,e){if(!this.isValidDate(t)||!this.isValidDate(e))return false;let i=new Date(t),r=new Date(e);return i<=r}static isValidResponse(t){return !!(t&&typeof t=="object"&&typeof t.success=="boolean")}static isValidApiKey(t){return !t||typeof t!="string"?false:/^[a-zA-Z0-9]{32,}$/.test(t)}static isValidPeriod(t){return !t||typeof t!="string"?false:["annual","quarter","fy"].includes(t.toLowerCase())}static isValidLimit(t){return typeof t=="number"&&Number.isInteger(t)&&t>0&&t<=1e3}static validateQuoteParams(t){let e=[];return t?(t.symbol?!this.isValidSymbol(t.symbol)&&!this.isValidCryptoSymbol(t.symbol)&&!this.isValidForexPair(t.symbol)&&e.push("Invalid symbol format"):e.push("Symbol is required"),t.from&&!this.isValidDate(t.from)&&e.push("Invalid from date format (expected YYYY-MM-DD)"),t.to&&!this.isValidDate(t.to)&&e.push("Invalid to date format (expected YYYY-MM-DD)"),t.from&&t.to&&!this.isValidDateRange(t.from,t.to)&&e.push("From date must be before or equal to to date"),e):(e.push("Parameters object is required"),e)}static validateFinancialParams(t){let e=[];return t?(t.symbol?this.isValidSymbol(t.symbol)||e.push("Invalid symbol format"):e.push("Symbol is required"),t.period&&!this.isValidPeriod(t.period)&&e.push('Invalid period (must be "annual", "quarter", or "FY")'),t.limit&&!this.isValidLimit(t.limit)&&e.push("Invalid limit (must be a positive integer <= 1000)"),e):(e.push("Parameters object is required"),e)}static validateDateRangeParams(t){let e=[];return t?(t.from&&!this.isValidDate(t.from)&&e.push("Invalid from date format (expected YYYY-MM-DD)"),t.to&&!this.isValidDate(t.to)&&e.push("Invalid to date format (expected YYYY-MM-DD)"),t.from&&t.to&&!this.isValidDateRange(t.from,t.to)&&e.push("From date must be before or equal to to date"),e):(e.push("Parameters object is required"),e)}static throwIfInvalid(t,e="Validation"){if(t.length>0)throw new Error(`${e} failed: ${t.join(", ")}`)}};exports.FMPValidation=s;