← All @molecule/* packages · App templates
@molecule/api-equity-prices-iexProvider bond · equity-prices · API (Node) · v1.0.1 · Apache-2.0
IEX Cloud equity-prices provider for molecule.dev
npm install @molecule/api-equity-prices-iexnpm · Source on GitHub · Implements @molecule/api-equity-prices
@molecule/api-equity-prices-iex is a provider bond on the API (Node) side: it implements the equity-prices core interface (@molecule/api-equity-prices) with a concrete vendor or library behind it.
Your code calls the core; you wire this provider once at startup. Swapping vendors later is one line in that wiring, not a rewrite.
import { setProvider } from '@molecule/api-equity-prices'
import { provider } from '@molecule/api-equity-prices-iex'
setProvider(provider)Works with: @molecule/api-equity-prices, @molecule/api-secrets
Secrets: IEX_API_KEY
Auto-generated, AI-first package reference for the molecule.dev ecosystem. It is written to be read by coding agents as much as by people, and is generated from this package's source — edit
src/index.tsJSDoc, not this file.
IEX Cloud equity-prices provider for molecule.dev.
Implements the EquityPricesProvider interface against the public IEX
Cloud https://cloud.iexapis.com/stable/ endpoints. Provides quotes
(/stock/:symbol/quote), historical bars (/stock/:symbol/chart/:range),
symbol search (/search/:query), and fundamentals
(/stock/:symbol/company + /stock/:symbol/stats).
Requires IEX_API_KEY. The provider detects HTTP 402 Payment Required
(IEX Cloud's quota-exhausted / paid-tier-required signal) and surfaces
it via Error.cause.code === 'RATE_LIMITED'. The API key is sanitized
out of all error messages.
import { setProvider } from '@molecule/api-equity-prices'
import { provider } from '@molecule/api-equity-prices-iex'
setProvider(provider)
provider
npm install @molecule/api-equity-prices-iex @molecule/api-equity-prices @molecule/api-secrets
IexEquityPricesConfigConfiguration options for the IEX Cloud equity-prices provider.
IEX Cloud requires an API token (IEX_API_KEY) which is sent as the
token query parameter on every request.
interface IexEquityPricesConfig {
/**
* API key, sent as the `token` query parameter on every request.
*
* If omitted, the provider falls back to the `IEX_API_KEY` environment
* variable. Requests will fail with a descriptive (and sanitized) error
* if neither is set.
*/
apiKey?: string
/**
* Base URL override. Defaults to `'https://cloud.iexapis.com/stable'`.
* Useful for sandbox (`'https://sandbox.iexapis.com/stable'`),
* self-hosted proxies, and testing.
*/
baseUrl?: string
/**
* Request timeout in milliseconds. Defaults to `10000`.
*/
timeout?: number
}
createProvider(config)Creates an IEX Cloud equity-prices provider.
function createProvider(config?: IexEquityPricesConfig): EquityPricesProvider
config — Provider configuration. The API key may be supplied here directly or via the IEX_API_KEY environment variable.Returns: An {@link EquityPricesProvider} backed by IEX Cloud.
sanitizeUrl(url)Returns a copy of {@link url} with the token query parameter redacted,
so it can safely appear in error messages and logs.
function sanitizeUrl(url: string): string
url — URL string that may contain a token=... query parameter.Returns: The same URL with token=REDACTED.
equityPricesIexSecretDefinitionsSecret definitions required by the IEX Cloud equity-prices bond.
const equityPricesIexSecretDefinitions: SecretDefinition[]
MISSING_API_KEYError code raised when the IEX Cloud API key is missing (neither the
config object nor the IEX_API_KEY environment variable provided one).
const MISSING_API_KEY: 'MISSING_API_KEY'
providerThe default provider implementation, lazily initialized on first use.
Reads IEX_API_KEY and (optional) IEX_BASE_URL from environment
variables. Use {@link createProvider} directly if you need to supply
configuration programmatically.
const provider: EquityPricesProvider
RATE_LIMITEDError code raised when IEX Cloud signals that the configured plan has
exhausted its message quota or that payment is required (HTTP 402 Payment Required). Surfaced via Error.cause so callers can handle it distinctly
from generic upstream errors and back-off / disable equity features
without leaking the API key.
const RATE_LIMITED: 'RATE_LIMITED'
UPSTREAM_ERRORError code raised when IEX Cloud returns a non-OK HTTP status (other than
402) or a body whose JSON shape indicates an upstream error.
const UPSTREAM_ERROR: 'UPSTREAM_ERROR'
Implements @molecule/api-equity-prices interface.
Setup function to register this provider with the core interface:
import { setProvider } from '@molecule/api-equity-prices'
import { provider } from '@molecule/api-equity-prices-iex'
export function setupEquityPricesIex(): void {
setProvider(provider)
}
Peer dependencies:
@molecule/api-equity-prices ^1.0.1@molecule/api-secrets ^1.0.1IEX_API_KEY (required) — IEX Cloud API token
pk_...@molecule/api-equity-prices@molecule/api-secretsIntegration checklist — drive the real UI (live preview, no mocks), adapt each item to this app's actual screens/flows, and check every box off one by one. A box you can't check is an integration bug to fix — not a skip:
getQuote('AAPL')) renders a PLAUSIBLE quote in
the UI — a real price in a sane range, formatted with the quote's own
currency (never a hardcoded $), never 0 / null / NaN or a
spinner that never resolves.AAPL and MSFT) each render their
OWN price — not one shared placeholder or the same number repeated (a
stale-cache or wrong-symbol wiring bug).getHistorical(symbol, range) returns an
ascending series of { ts, close } that actually draws a line that moves
— not an empty array, a flat line, or points in reversed order.searchSymbol() results, or a caught getQuote error) — never a
crash, a blank card, or a NaN price.ts is surfaced (a timestamp or a
"delayed / last close" label) so an out-of-hours last-close price is NOT
presented as a live trade — the UI never dresses stale data up as real-time.NaN; quotes are cached server-side, not
refetched per render.